$(document).ready(function(){...})是否会清除所有先前在文档中注册的事件处理程序?

时间:2012-01-31 23:01:32

标签: jquery javascript-events handler

我对JQuery中的.ready()函数有疑问。特别是,考虑某人将某个处理程序绑定到文档就绪事件的情况,并执行

$(document).ready(function(){ /* my code here */ })

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

谢谢

7 个答案:

答案 0 :(得分:3)

同意。您可以根据需要多次使用该功能。这是JQuery文档。

http://docs.jquery.com/Tutorials:Multiple_ $(文件)。就绪()

所有函数,$(document).ready(),$(window).load()以及像click all一样的绑定被添加到堆栈中。这样您就可以在所有javaascript文件上使用$(document).ready。

答案 1 :(得分:3)

答案是:它被添加到此事件的事件处理程序集中。它也很容易测试:

$(document).ready(function(){alert('test1');});
$(document).ready(function(){alert('test2');});

答案 2 :(得分:2)

如果这些处理程序也添加了jQuery.ready,它会将新的事件处理程序添加到现有的处理程序中。如果它们是通过DOM直接添加的,它们将被覆盖。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

它将推送到堆栈,因此不会覆盖。

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

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