2010-11-22 60 views
1

嘿家伙, 快速提问:在一个网站上使用两个$(window).load(function(e){函数实际上是否可行和有语义?jquery和javascript:两个加载函数?

例如我有一个header.php其中包含<script>标记与一些jQuery - $(window).load(function(e){是它的一部分。在它下面我有另一个标签链接到一个外部.js文件,它又有一个$(window).load(function(e){

这是允许和可以吗?

谢谢!

回答

4

是的。您所做的每个load()声明将简单地附加到现有处理程序。

docs on .bind()(这是处理实际工作的load()快捷方式功能):

当一个事件到达的元素,绑定到该事件类型的元件的所有处理程序被解雇。如果有多个处理程序注册,它们将始终按照它们绑定的顺序执行。在所有处理程序执行完毕后,事件将沿着正常事件传播路径继续。

1

​​函数(和其他与事件相关的函数)接受函数,该函数在事件触发时将其放置在事件处理程序队列中。

所以,要更直接地回答你的问题,是的。

0

让我们刚才谈到它怎么可能?

假设您有多个事件要在您的页面完全加载时调用。让我们来看看JavaScript以获得更多关于这个概念的信息,并让它简单易懂。

var pageLoadEvents = []; 

我们已经创建了一个数组,其中我们将继续我们的所有活动,我们希望加载页面时调用。

pageLoadEvents.push(function() { 
    alert("hello!"); 
}) 

和:

pageLoadEvents.push(function() { 
    alert("How are you doing?"); 
}) 

现在,您已经定义了所有你想提高页面加载和所有这些事件都是在一个pageLoadEvents阵列。在这里,我们写最后一段:

window.onload = function() { 
for(var index=0; index<pageLoadEvents.length; index++) { 
    pageLoadEvents[index](); 
} 
} 

,我们保持pageLoadEvents阵列中的所有活动将由一个被执行一个。

每次调用load$(window)保持它的内容时(如函数(E){..})你load在数组定义和最终执行他们每个人。