jquery和javascript:两个加载函数?

时间:2010-11-22 11:49:17

标签: javascript jquery

嘿伙计们, 快速问题:在一个网站上使用两个$(window).load(function(e){函数实际上是否可能和语义?

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

这是允许的吗?

谢谢你!

3 个答案:

答案 0 :(得分:4)

是。您所做的每个load()声明都只会附加到现有的处理程序中。

来自docs on .bind()(这是处理load()快捷方式实际工作的函数):

  

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

答案 1 :(得分:1)

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

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

答案 2 :(得分: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)时,它会将您在load中定义的内容(例如函数(e){..})保留在数组中,并最终执行每个他们。