.on单击以查找动态创建的项目

时间:2011-11-09 22:58:13

标签: javascript jquery jquery-1.7

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

以下是我的示例:http://jsfiddle.net/2Lbbe/

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

任何人都知道如何在不使用直播的情况下解决此问题?

2 个答案:

答案 0 :(得分:2)

您实际上是在尝试执行以前称为.delegate()的操作。将事件处理程序附加到永久物,然后查看目标。

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

your updated fiddle

来自docs

  

.on(events [,selector] [,data],handler)

     

说明: 将一个或多个事件的事件处理函数附加到所选元素。

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

进行最终选择

答案 1 :(得分: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+