多个$(文档).ready(function(){})

时间:2011-05-18 08:28:18

标签: jquery document bind unbind ready

我最近开始使用jQuery,现在我正在开发一个项目,我正在使用ajax函数并一次又一次地加载相同的库(我已经写过)。并且由于$(document).ready(function(){})一次又一次地呼叫。如果我一次又一次地加载4次,则意味着一个函数需要4次。

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

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

1 个答案:

答案 0 :(得分: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
  });
}

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