1

我最近开始在 jQuery 中工作,现在当我在一个项目上工作时,我正在使用 ajax 函数并一次又一次地加载相同的库(我已经编写过)。由于那个$(document).ready(function(){})电话一次又一次。意味着一个函数调用 4 次,如果我一次又一次地加载它 4 次。

我想清理/未准备好/卸载以前的准备好的功能并准备好新的功能。我也用来试穿$(function(){})。但同样的结果。我试图获得任何相应/相关的主题。但找不到。

如果我找不到这个或没有人可以帮助我。然后我认为我应该将我的一个库拆分/分解为多个库。

4

1 回答 1

0

这按预期工作,多个事件注册将彼此独立触发。

但是,您可以采取一种解决方法:设置一个标志,如果多次调用该标志将阻止执行。例如,此页面将加载您的脚本四次,但事件注册只会发生一次:

this is your HTML page
<script>
  var alreadyRan = false;
</script>
<script src="yourscript.js?firstload"></script>
<script src="yourscript.js?secondload"></script>
<script src="yourscript.js?thirdload"></script>
<script src="yourscript.js?nextload"></script>
etc.

然后,在 yourscript.js 中:

if (!alreadyRan) { // we declared alreadyRan in the global scope
  alreadyRan = true; // won't run on further invocations
  // thus the handler will only be registered one time
  $(document).ready(function(){
    // your onready code
  });
}

请注意,将库拆分为只需要一次的部分和重复调用的部分可能更容易,并且只加载该初始部分一次。

于 2011-05-18T08:34:46.623 回答