[英]jQuery load() dynamic content with clicks get fired as many times as loaded
我通过jQuery load()加载内容,但是每次加载给定页面时,页面上的点击都会被触发多次。 为什么??
此处的小提琴是: http : //jsfiddle.net/ZUZ3L/ph3tH/2/
只需将您的点击处理结果放到load
:
$(document).ready(function() {
function loadContent() {
$(".ajaxContainer").load("http://fiddle.jshell.net/ #actions", function() {
alert("Done");
});
}
$(".load").click(loadContent);
loadContent();
});
每次加载内容时,都执行以下行:
$(".load").click(loadContent);
这会在事件处理程序列表中添加一个新的事件处理程序,以便在单击.load
执行。 您执行了三次函数,现在您有了三个相同的处理程序,每次单击都会触发这些处理程序。
因为您要调用该函数两次,请尝试以下操作:
$(document).ready(function() {
function loadContent() {
$(".ajaxContainer").load("http://fiddle.jshell.net/ #actions", function() {
alert("Done");
});
}
loadContent();
$(".load").click(loadContent);
});
这是因为您要多次添加click事件。
每次运行代码时,都会重新定义click函数。 重新定义单击后,它不会替代上一个,而是每次“单击”事件发生时,它将被添加到要执行的堆栈中。 这适用于jQuery中的所有事件。
通过AJAX加载时,文档中的var和事件仍然保留。 这意味着您只是在每次运行ajax调用时要执行的函数调用之上添加一层
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.