ajax - 帮助从 .live() 切换到 .delegate() jQuery

标签 ajax jquery

我正在使用代码:

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

相关文章:

javascript - Jquery 文本未解析为变量

jquery - 如何只设置事件选项卡的背景颜色

javascript - ajax 调用返回未定义类型的数据

每个div的ajax请求

javascript - jquery - 重做旧值

更新 html 时 jQuery 更改事件丢失

javascript - 获取多个 XML 文件时的 AJAX 回调

javascript - 如何等待所有数据加载ajax完成以在Angular中渲染页面?

javascript - 如何显示 jQuery 自动完成响应并选择它?

javascript - HTTP header 在 $.AJAX 调用中不起作用