将单击事件绑定到动态创建的html内容

时间:2013-05-03 10:35:56

标签: javascript jquery

我有以下jQuery命令在动态创建特定元素时绑定click事件。

$(".bill-remove-icon").live("click", function(){
$(this).parent().hide('slide',function(){$(this).parent().remove()});
});

但是这段代码给出了一个firebug错误:

TypeError: $(...).live is not a function

我在这里做错了什么?如果此代码错误,请提示一种更好的方法将事件绑定到动态创建的元素。

3 个答案:

答案 0 :(得分:3)

Live已弃用,您必须使用.on()

的委派
$(document).on("click", ".bill-remove-icon", function(){
    $(this).parent().hide('slide',function(){$(this).parent().remove()});
});

答案 1 :(得分:1)

live()在jQuery 1.7中已弃用,已在1.9中删除。您需要使用.on(),其工作方式与live()略有不同。您不能将事件处理程序附加到动态注入的元素,您必须将它附加到页面加载时存在的元素,并且将事件委托到动态添加的元素,如下所示:

$(document).on('click', '.bill-remove-icon', function() {
   ...
});

您应该更改document更接近bill-remove-icon的内容,以便事件不会在DOM树的正上方冒泡。

See Direct and delegated events

答案 2 :(得分:0)

不要使用live它已被弃用。使用on

$(".bill-remove-icon").on("click", function(){
    $(this).parent().hide('slide',function(){$(this).parent().remove()});
});

http://api.jquery.com/live/