我正在附加一个<li>
,当我尝试使用新的 .on 事件单击它时,它不起作用。我不想使用 .live 事件,因为它将来可能会被弃用。
这是我的例子:http: //jsfiddle.net/2Lbbe/
这适用于第一个项目,如果您创建一个新的警报不起作用。
任何人都知道如何在不使用 live 的情况下解决这个问题?
我正在附加一个<li>
,当我尝试使用新的 .on 事件单击它时,它不起作用。我不想使用 .live 事件,因为它将来可能会被弃用。
这是我的例子:http: //jsfiddle.net/2Lbbe/
这适用于第一个项目,如果您创建一个新的警报不起作用。
任何人都知道如何在不使用 live 的情况下解决这个问题?
您实际上是在尝试做过去称为 .delegate() 的事情。将事件处理程序附加到永久的东西上,然后在里面寻找你的目标。
$("#bxs").on('click', 'li',function() {
从文档:
.on( 事件 [, 选择器] [, 数据] , 处理程序)
描述: 将一个或多个事件的事件处理函数附加到选定元素。
.on() 现在能够满足 .bind() .live() 和 .delegate() 的用途,具体取决于它的使用方式。如果您希望处理程序应用于未来的项目,您必须使用可选的进行最终选择[,selector]
你已经很接近了,你需要做的就是改变你的选择器设置:
从
$("#bxs li").on('click',function() {
到
$("#bxs").on('click', 'li',function() {
这是您的 jsfiddle 的更新:http: //jsfiddle.net/jasper/2Lbbe/2/
使用这样的.on()
函数与旧.delegate()
函数相同:
$(elements).delegate(selector, events, data, handler); // jQuery 1.4.3+
$(elements).on(events, selector, data, handler); // jQuery 1.7+