$(document).ready(function(){ ... })会清除先前注册的所有document ready事件处理程序吗?

3
我对jQuery中的.ready()函数有疑问,特别是考虑到某人已将某些处理程序绑定到文档准备就绪事件上,而我执行了以下操作:
$(document).ready(function(){ /* my code here */ })

这会覆盖之前注册的处理程序,还是只会添加一个新的处理程序(我的)到事件中?

3
这是一件你本可以轻易自行解决的事情:$( func1 ); $( func2 ); - Šime Vidas
7个回答

3
答案是:它被添加到此事件的事件处理程序集中。测试也很简单:
$(document).ready(function(){alert('test1');});
$(document).ready(function(){alert('test2');});

3

同意。您可以随意使用此功能。以下是 JQuery 文档。

http://docs.jquery.com/Tutorials:Multiple_$(document).ready()

所有函数,包括 $(document).ready()、$(window).load(),以及像 click 这样的绑定都被加入到堆栈中。这样您就可以在所有 JavaScript 文件中使用 $(document).ready 了。


2

如果之前的事件处理程序是通过jQuery.ready添加的,那么它将会将你的新事件处理程序添加到现有的处理程序中。但如果之前的事件处理程序是直接通过DOM添加的,则将被覆盖。


1
不,它会将您的处理程序添加到集合中。

0

它会推到堆栈中,所以不会覆盖。


0

与通过jQuery绑定的所有事件处理程序一样,它将被添加到元素/事件的事件处理程序队列中。

jQuery具有event.stopImmediatePropagation()来停止执行附加到同一元素的事件处理程序:http://api.jquery.com/event.stopImmediatePropagation/


0

这将把新函数添加到处理程序堆栈中。此外,如果在DOM初始化后运行它,则该函数将立即执行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接