Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery load()单击的动态内容被激发的次数与加载的次数相同_Javascript_Jquery_Ajax_Jquery Load - Fatal编程技术网

Javascript jQuery load()单击的动态内容被激发的次数与加载的次数相同

Javascript jQuery load()单击的动态内容被激发的次数与加载的次数相同,javascript,jquery,ajax,jquery-load,Javascript,Jquery,Ajax,Jquery Load,我通过jQuery load()加载内容,但每次加载给定页面时,页面上的单击都会触发多次。为什么 在这里演奏小提琴: 由于要调用函数两次,请尝试以下操作: $(document).ready(function() { function loadContent() { $(".ajaxContainer").load("http://fiddle.jshell.net/ #actions", function() { alert("Done");

我通过jQuery load()加载内容,但每次加载给定页面时,页面上的单击都会触发多次。为什么

在这里演奏小提琴:

由于要调用函数两次,请尝试以下操作:

$(document).ready(function() {
    function loadContent() {
        $(".ajaxContainer").load("http://fiddle.jshell.net/ #actions", function() {
            alert("Done");
        });
    }
    loadContent();
    $(".load").click(loadContent);

});

因为要调用函数2次,请尝试以下操作:

$(document).ready(function() {
    function loadContent() {
        $(".ajaxContainer").load("http://fiddle.jshell.net/ #actions", function() {
            alert("Done");
        });
    }
    loadContent();
    $(".load").click(loadContent);

});

只需将您的点击手柄置于
加载之外即可:

$(document).ready(function() {
    function loadContent() {
        $(".ajaxContainer").load("http://fiddle.jshell.net/ #actions", function() {
            alert("Done");                
        });
    }

    $(".load").click(loadContent);
    loadContent();
});​

只需将您的点击手柄置于
加载之外

$(document).ready(function() {
    function loadContent() {
        $(".ajaxContainer").load("http://fiddle.jshell.net/ #actions", function() {
            alert("Done");                
        });
    }

    $(".load").click(loadContent);
    loadContent();
});​

这是因为您多次添加单击事件

每次代码运行时,都会重新定义click函数。重新定义单击时,它不会替换上一个,而是会添加到堆栈中,以便在每次发生“单击”事件时执行。这将应用于jQuery中的所有事件


当您通过AJAX加载时,文档中的变量和事件仍然保持不变。这意味着您只是在每次运行ajax调用时要执行的函数调用层之上添加层,这是因为您要多次添加click事件

每次代码运行时,都会重新定义click函数。重新定义单击时,它不会替换上一个,而是会添加到堆栈中,以便在每次发生“单击”事件时执行。这将应用于jQuery中的所有事件


当您通过AJAX加载时,文档中的变量和事件仍然保持不变。这意味着您只是在每次运行ajax调用时要执行的函数调用层的顶部添加层,每次加载内容时,您都会执行以下行:

$(".load").click(loadContent);

它将新的事件处理程序添加到事件处理程序列表中,以便在单击
.load
时执行。您执行函数三次,现在有三个相同的处理程序,每次单击都会触发。

每次加载内容时,您都会执行这一行:

$(".load").click(loadContent);

它将新的事件处理程序添加到事件处理程序列表中,以便在单击
.load
时执行。您执行函数三次,现在有三个相同的处理程序,每次单击都会触发。

这只是一个示例。我有这么多的网页这么多的链接。为了组织,我在call函数中有click事件。还有其他方法吗???@KennethB这会使你的函数被调用两次,有更好的组织方法,在定义函数后使用单击处理程序。这只是一个例子。我有这么多的网页这么多的链接。为了组织,我在call函数中有click事件。还有其他方法吗???@KennethB这会使你的函数被调用两次,有更好的组织方法,在定义函数后使用单击处理程序。如果我在每次加载之前都取消绑定(“单击”)所有链接,那应该没问题??你为什么要首先重新绑定它?就绑一次。你可以在其他答案中看到它是如何正常工作的。如果在每次加载之前我只是取消绑定(“单击”)所有链接,那应该没问题??你为什么要首先重新绑定它?就绑一次。你可以在其他答案中看到它通常是如何完成的。