在我的应用程序中,我在同一页面上运行$(document).ready(
两次它们之间会发生冲突吗?
在此先感谢,
迪恩
答案 0 :(得分:6)
不。 jQuery事件相互堆叠,将逐个执行。
来自jQuery docs on bind():
当事件到达元素时,将触发绑定到该元素的该事件类型的所有处理程序。如果注册了多个处理程序,它们将始终按照绑定的顺序执行。
答案 1 :(得分:6)
不存在冲突。
$(document).ready(function() { alert("One"); });
$(document).ready(function() { alert("Two"); });
会发出两次警报。
答案 2 :(得分:4)
$(document).ready()
非常安全 - 您可以将多个处理程序挂钩或在事件触发后很长时间使用它。
如果你调试到jQuery(只包括一个未经说明的版本),你会看到.ready()
看起来像:
ready: function( fn ) {
// Attach the listeners
jQuery.bindReady();
// If the DOM is already ready
if ( jQuery.isReady ) {
// Execute the function immediately
fn.call( document, jQuery );
// Otherwise, remember the function for later
} else if ( readyList ) {
// Add the function to the wait list
readyList.push( fn );
}
return this;
}
因此,如果jQuery.isReady
(表示已经发生文档就绪),则会立即调用$(document).ready()函数。否则,该函数将添加到处理程序数组中。
在jQuery内部ready
处理程序:
// If there are functions bound, to execute
if ( readyList ) {
// Execute all of them
var fn, i = 0;
while ( (fn = readyList[ i++ ]) ) {
fn.call( document, jQuery );
}
// Reset the list of functions
readyList = null;
}
因此,在ready
jQuery循环并调用绑定到ready
的所有函数。这些函数是串行调用的(一个接一个,不是并行调用)。这意味着一个人将在下一个开始之前完成。
答案 3 :(得分:1)
没有。 jQuery旨在堆叠它们。