jQuery:函数的“live”和“on”之间的区别

时间:2012-03-26 22:09:23

标签: jquery

我正在阅读this post

并且有一个我认为没有回答的问题。为什么这样做:

$('#threeButtons').live('click', '.markAsSpam', function() {
     // do some stuff
});

但这不是:

$('#threeButtons').on('click', '.markAsSpam', function() {
     // do some stuff
});

我看到参数不同,但我遵循如何使用.on的示例。至少应用于我的例子。

我的DOM看起来像

<div id="threeButtons">
     <a href="#" class="markAsSpam">Spam</a>
     ...
</div>

我需要使用.live或.on,因为我正在处理附加在DOM中的HTML。此外,我的.live示例仅在第一次工作。在不刷新页面的情况下,我需要做什么才能在连续尝试中使用它。我正在使用jQuery 1.7并希望使用.on,因为.live已被弃用。

1 个答案:

答案 0 :(得分:1)

来自文档:

  

.live( events, data, handler(eventObject) )

因此,以下代码将只为#threeButtons注册一个实时点击事件,该事件将收到另一个参数.markAsSpam

$('#threeButtons').live('click', '.markAsSpam', function() {
     // do some stuff
});

然而,当使用.on()时,您创建了click处理程序绑定在#threeButtons上的委托,但只有在单击的元素与.markAsSpam选择器匹配时才会触发该事件