我正在使用代码:
$('#stream').delegate('.load','click',function(){
//DO ACTIONS HERE
});
但是当使用 ajax 调用更新内容时,脚本不再工作,我最初使用 .live() 但我更喜欢使用委托(delegate),我知道我可以解决这个问题吗?
编辑
<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 调用创建的链接都具有正确的类属性吗?
关于ajax - 帮助从 .live() 切换到 .delegate() jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5596529/