【发布时间】:2017-10-19 12:40:04
【问题描述】:
<div id="loaded-content">
@Scripts.Render("~/someScript.js")
</div>
这似乎等同于
<div id="loaded-content">
<script src="/someScript.js"></script>
</div>
当使用 ajax 加载上述内容时,来自 someScript.js 的每个事件侦听器都将变为活动状态并保持不变,即使稍后通过 jQuery 将内容删除,如下所示:
$("#loaded-content").remove();
如果内容不断加载和删除,应该怎么做才能防止多次激活相同的事件侦听器?我尝试添加一个全局变量var scriptHasRun = false;,然后在someScript.js中添加以下代码:
$(document).ready(function(){
if(scriptHasRun){
return;
}
scriptHasRun = true;
<more code>
});
它适用于someScript.js,但随后出现的someOtherScript.js 似乎以相同的方式加载,所以为了提前防止事情发生,我对另一个变量var otherScriptHasRun = false; 使用了相同的方法,第二次加载它它不再工作的页面。当我删除支票时,它开始正常工作。我想知道如何复制someOtherScript.js 的情况,或者在正常情况下,是什么导致someScript.js 被多次加载?
【问题讨论】:
标签: javascript c# jquery ajax