这按预期工作,多个事件注册将彼此独立触发。
但是,您可以采取一种解决方法:设置一个标志,如果多次调用该标志将阻止执行。例如,此页面将加载您的脚本四次,但事件注册只会发生一次:
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
});
}
请注意,将库拆分为只需要一次的部分和重复调用的部分可能更容易,并且只加载该初始部分一次。