on()方法不能像live()一样工作

时间:2012-03-28 17:41:26

标签: jquery jquery-1.7

我将一些方法从$(selector).live('click', function(){});更改为$(selector).on('click', function(){});

起初它看起来完全一样。但是当我在DOM上插入新的html时,使用相同选择器插入的新元素,它们不会被$(selector).on('click', function(){});捕获,而是在它们被live()方法捕获之前。

为什么呢?我错过了什么?

1 个答案:

答案 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