我正在使用代码:

$('#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/

10-15 00:05
查看更多