jquery使用.on / .off重新绑定事件

时间:2014-01-25 22:34:19

标签: jquery events

我目前正在对DOM的各个部分进行排序,将它们放入一个数组中,运行sort然后将它们追加到DOM中 - 这很好。

我遇到的问题是重新绑定所需的点击事件。这是DOM的简化版本:

<div id="allmembers">

  <div id="member1">
    <img class="openmessage"/>
    <img class="deletemessage"/>
    <img class="pinmessage"/>
  </div>

  <div id="member2">
    <img class="openmessage"/>
    <img class="deletemessage"/>
    <img class="pinmessage"/>
  </div>

</div>

排序/追加发生在id = member1 / member2级别,因此id =“allmembers”不会移动/更改。

对于open / delete / pin类元素,我确实有这样的点击事件,如:

$('#allmembers .openmessage).on('click', function(e) {
  alert('open message');
});

但是这个.on仅在第一次排序/附加之前有效。在它不再发射之后。

如何为移动(不是静态)的元素设置点击事件?

1 个答案:

答案 0 :(得分:2)

尝试事件委派。

将事件附加到父节点,并在启动时捕获来自特定子节点的事件。

继承语法:

$('#allmembers').on('click', '.openmessage', function(e) {
   alert('open message');
});

此处有更多信息:http://api.jquery.com/on/