我将一些方法从$(selector).live('click', function(){});
更改为$(selector).on('click', function(){});
。
起初它看起来完全一样。但是当我在DOM上插入新的html时,使用相同选择器插入的新元素,它们不会被$(selector).on('click', function(){});
捕获,而是在它们被live()方法捕获之前。
为什么呢?我错过了什么?
答案 0 :(得分:4)
.on
相比, .live
采用不同的参数集。你不能只用另一个替换(并且。$(selector).on.live
没有意义)
正确的语法是:
$(document).on('click', selector, function(){});
这将绑定到匹配selector
的所有元素,无论它们何时被添加到DOM中。
注意:强>
除了document
之外,您可以使用元素的父级,只要该父级保留在DOM中。
例如:
<div id="myDiv">
<p>Hello World</p>
<p>Hello World</p>
</div>
然后你可以这样做:
$('#myDiv').on('click', 'p', function(){});
点击事件将触发添加到<p>
的所有#myDiv
个标记。
注意:强>
$(selector).on('click', function(){})
与做
相同$(selector).bind('click', function(){})
(jQuery 1.7.1建议使用.on
代替.bind
)