jQuery:如何用.onreplace.live?
可能重复:
jQuery 1.7 – 将live()变成on()
根据jQuery API( http://api.jquery.com/on/ ),“live”函数已被弃用,build议使用“on”代替。 但是当我用代码中的'on'replace'live'时,jQuery找不到以后添加的元素:
这工作(但不赞成):
$('li.bibeintrag').live('click', function(){ alert('myattribute =' + $(this).attr('myattribute')); });
这是“on”API的一个例子:
$("#dataTable tbody tr").on("click", function(event){ alert($(this).text()); });
当我改变我的代码('活'换成'开')它不工作了(jQuery不会find后来添加的元素(例如与追加)):
$('li.bibeintrag').on('click', function(){ alert('myattribute =' + $(this).attr('myattribute')); });
我究竟做错了什么? 有人可以帮忙吗?
您应该将事件添加到li.bibeintrag
任何父元素。
$('ul').on('click', "li.bibeintrag", function(){ alert('myattribute =' + $(this).attr('myattribute')); });
当通过$.on
风格查看时,jQuery的直播看起来像这样:
$(document).on("click", "li.bibeintrag", function(){ });
它将监听document
级别的单击事件,并确定它们的目标是否匹配$.on
的第二个参数。 我们鼓励你们自己来做,而不是在文档层面上听,我们要更接近元素本身(所以事件在处理之前不需要传播太多)。
由于您是在点击某个li
回应,请在该项目的父级别处听:
$("ul#myList").on("click", "li.bibeintrag", function(){ /* Respond */ });
请记住,如果不提供$.on
的第二个参数,则事件处理程序会绑定到元素本身,这意味着您不会获得$.live
的行为,这会对dynamic添加的元素做出反应。
这应该工作
$('ul').on('click','li.bibeintrag' function(){ alert('myattribute =' + $(this).attr('myattribute')); });