0

我有这段 jQuery 代码:

$('a.manage-content-link').click(function (e) {
    var self = $(this),
        file = self.siblings('input[name="block-type"]').val();
    file = file.substring(file.length - 3);
    self.next(".manage-content-wrap").find(".manage-content").load("file-" + file + ".php?key=" + self.siblings('input[name="key"]').val());
    e.preventDefault();
});

但我认为该代码仅在单击后才“加载”。如果发生第二次、第三次等点击,我看不到代码会重新加载文件。每次点击事件发生时如何让jQuery重新加载?谢谢!

4

1 回答 1

1

我怀疑每次加载页面时都会替换链接元素(即它是加载内容的一部分)。如果是这种情况,当您替换一个元素时,即使 ID 完全相同,绑定到它的事件也会丢失。您可以通过委派处理程序来解决运行代码时不存在的未来元素来克服这个问题。

请参阅 jQuery Docs 常见问题解答“为什么我的事件在 AJAX 请求后停止工作?”

$(document).on('click','a.manage-content-link',function (e) {
   /* your code*/
})

如果元素没有被替换,则问题出在其他地方(缓存、错误等)。您需要使用浏览器控制台来查看是否正在发出 AJAX 请求。

在您的处理程序(或警报)中添加一个简单的日志记录功能将告诉您单击事件是否也正在执行

于 2012-10-27T09:59:21.747 回答