我正在使用代码:
$('#stream').delegate('.load','click',function(){
//DO ACTIONS HERE
});
但是当用ajax调用更新内容时,该脚本不再起作用,我最初使用.live(),但我更喜欢使用委托,关于我的任何想法我都可以解决?
编辑
<html>
<div id="stream">
<a href="example.html" class="load">example</a>
<a href="example.html" class="load">example</a>
<a href="example.html" class="load">example</a>
<div class="load-more">load more links</div>
</div>
$('.load-more').click(function(){
$.ajax({
url: 'load.php',
type: 'GET',
cache: false,
success: function(data) {
$('.load-more').before(data);
}
});
return false;
});
最佳答案
如果事件处理程序仅工作一次,则Ajax调用可能会覆盖$('#stream')引用的元素,该元素包括附加到此元素的所有事件侦听器。
如果需要覆盖此元素,请将$ .delegate侦听器附加到$('#stream')的父元素。否则,请确保仅替换$('#stream')的内容,而不是整个元素。
编辑
您提供的代码示例没有任何问题。他们应该工作。您确定由Ajax调用创建的链接都具有正确的class属性吗?
关于ajax - 帮助从.live()切换到.delegate()jQuery,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5596529/