0

我正在附加一个<li>,当我尝试使用新的 .on 事件单击它时,它不起作用。我不想使用 .live 事件,因为它将来可能会被弃用。

这是我的例子:http: //jsfiddle.net/2Lbbe/

这适用于第一个项目,如果您创建一个新的警报不起作用。

任何人都知道如何在不使用 live 的情况下解决这个问题?

4

2 回答 2

2

您实际上是在尝试做过去称为 .delegate() 的事情。将事件处理程序附加到永久的东西上,然后在里面寻找你的目标。

$("#bxs").on('click', 'li',function() {

你更新的小提琴

文档

.on( 事件 [, 选择器] [, 数据] , 处理程序)

描述: 将一个或多个事件的事件处理函数附加到选定元素。

.on() 现在能够满足 .bind() .live() 和 .delegate() 的用途,具体取决于它的使用方式。如果您希望处理程序应用于未来的项目,您必须使用可选的进行最终选择[,selector]

于 2011-11-09T23:00:40.283 回答
2

你已经很接近了,你需要做的就是改变你的选择器设置:

$("#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+
于 2011-11-09T23:01:16.113 回答