使用jQuery重新注册事件

Sku*_*udd 4 jquery

在我的一些项目中,我一直在通过jQuery添加新元素,我偶然发现了一些麻烦的问题.

考虑以下:

$('span.claim').click(function() {
    $(this).parent().html('<span class="unclaim">Unclaim</span>'):
});

$('span.unclaim').click(function() {
    $(this).parent().html('<span class="claim">Claim</span>'):
});
Run Code Online (Sandbox Code Playgroud)

以下标记......

<ul>
    <li><span class="claim">Claim</span></li>
    <li><span class="unclaim">Unclaim</span></li>
    <li><span class="claim">Claim</span></li>
    <li><span class="unclaim">Unclaim</span></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

不幸的是,在触发初始事件之后,不会处理任何后续事件.

我意识到我可以完全重构并使用该.bind()功能,但由于我的项目的复杂性,这实际上并不是那么可行.

如何在创建新元素之后重新绑定事件而不放弃我的匿名函数,或者甚至可能吗?

Pad*_*ddy 6

您可能希望查看jQuery实时事件:http: //docs.jquery.com/Events/live

  • live()方法从jquery1.7开始是dprecated.http://api.jquery.com/live/ (3认同)