在我的一些项目中,我一直在通过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()功能,但由于我的项目的复杂性,这实际上并不是那么可行.
如何在创建新元素之后重新绑定事件而不放弃我的匿名函数,或者甚至可能吗?
您可能希望查看jQuery实时事件:http: //docs.jquery.com/Events/live