Javascript 如何删除从特定加载文件生成的所有事件侦听器?

Javascript 如何删除从特定加载文件生成的所有事件侦听器?,javascript,c#,jquery,ajax,Javascript,C#,Jquery,Ajax,如果内容不断加载和删除,应如何防止同一事件侦听器被多次激活?我尝试添加一个全局变量var scriptHasRun=false,然后是someScript.js中的以下代码: $("#loaded-content").remove(); $(文档).ready(函数(){ if(scriptHasRun){ 返回; } scriptHasRun=true; }); 它适用于someScript.js,但随后出现了以相同方式加载的someOtherScript.js,因此为了防止事情提前发生,

如果内容不断加载和删除,应如何防止同一事件侦听器被多次激活?我尝试添加一个全局变量
var scriptHasRun=false
,然后是
someScript.js
中的以下代码:

$("#loaded-content").remove();
$(文档).ready(函数(){
if(scriptHasRun){
返回;
}
scriptHasRun=true;
});

它适用于
someScript.js
,但随后出现了以相同方式加载的
someOtherScript.js
,因此为了防止事情提前发生,我对另一个变量使用了相同的方法
var otherScriptHasRun=false第二次加载到页面时,它就不再工作了。当我取下支票时,它开始正常工作。我想知道如何复制
someOtherScript.js
的环境,或者在正常情况下,是什么导致
someScript.js
被多次加载?

我看到您正在使用jQuery。我不确定您在someScript.js中有什么,但您可以使用

$(document).ready(function(){
    if(scriptHasRun){
        return;
    }
    scriptHasRun = true;

    <more code>

});
在附加事件之前从元素取消绑定事件,使其不会被多次附加

我尝试使用的另一个选项是将特定的事件相关类添加到元素中,以将它们标记为已经附加了事件,并使用下面的行之类的内容附加事件,这样您就可以跳过使用变量scriptHasRun来检查脚本是否已加载

$('#element').off('click', handleClick);

我看到您正在使用jQuery。我不确定您在someScript.js中有什么,但您可以使用

$(document).ready(function(){
    if(scriptHasRun){
        return;
    }
    scriptHasRun = true;

    <more code>

});
在附加事件之前从元素取消绑定事件,使其不会被多次附加

我尝试使用的另一个选项是将特定的事件相关类添加到元素中,以将它们标记为已经附加了事件,并使用下面的行之类的内容附加事件,这样您就可以跳过使用变量scriptHasRun来检查脚本是否已加载

$('#element').off('click', handleClick);

这可能是因为
someScript.js
中的事件侦听器绑定到主体,而
someOtherScript.js
中的事件侦听器绑定到元素本身,因此它们不需要检查脚本之前是否运行过的代码,但是仍然适用于
someScript.js

,这可能是因为
someScript.js
中的事件侦听器绑定到主体,而
someOtherScript.js
中的事件侦听器绑定到元素本身,因此它们不需要检查脚本是否已运行过的代码,但仍然适用于
someScript.js

,用于解除每个元素的绑定。在
someOtherScript.js
的情况下,当我删除调用它的html时,所有东西都会自动解除绑定。这是为了解除每个元素的绑定。在
someOtherScript.js的情况下,当我删除调用它的html时,所有东西都会自动解除绑定。
$('#myElemetSelector:not(.boundToEventX)').addClass('boundToEventX').on('click',  onElemetClickedFunction);