可以运行2个文件。已经使它们发生冲突?

时间:2010-07-10 15:28:51

标签: javascript jquery

在我的应用程序中,我在同一页面上运行$(document).ready(两次它们之间会发生冲突吗?
在此先感谢,
迪恩

4 个答案:

答案 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旨在堆叠它们。