2012-10-18 100 views
1

说我有:JavaScript操作顺序

<div id="name" class="button"></div>

,并在javacript文件我定义二者的点击类的按钮和id名称的行为,是这样的:

$("#name").click(function(event){ 
    alert("hi"); 
}) 

$(".button").click(function(event){ 
    alert("bye"); 
}) 

当我点击div,我会在“再见”警报之前收到“hi”警报,因为“hi”出现在“再见”之上吗?或者做一些其他事情来确定最先发生的事如果这两个功能在不同的文件中呢?那么它会首先包含哪个JavaScript文件(出现在更接近HTML文件的顶部)?我认为jQuery与此无关,对吧?

+1

你为什么不试试这个在您的网页浏览器? – StaticVariable

+0

@jhonraymos - 我不确定是否有JavaScript执行定义的优先顺序。我不想在浏览器/环境的有限子集上进行测试,只是发现我忘记了一个主要的行为不同的 –

回答

3

你是完全正确的,它是诚实的基础上首先绑定。在你的情况下,"#name"首先被绑定,然后是".button",所以这就是为什么它们最终以同样的顺序被执行的原因。它不是基于哪一页首先在页面上看到的,而是首先绑定的。绑定可能发生在一个函数中,所以直到函数被调用(显然)才会发生,但该函数可能在其他绑定之前被声明 - 并不意味着什么,它必须被调用。在不同的文件中也是如此。当文件被解析时,它们被执行。所以我之前说的也适用于此 - 只要绑定按照事件被解析的顺序执行(从HTML页面的顶部到底部),它们将按照该顺序发生。我很确定发生这种情况的原因是因为jQuery将这些绑定存储在FIFO中 - 先进先出。

+0

是html始终从上到下分析的? –

+0

除非我错过了一些东西,我相信如此。我的意思是,这就是为什么有些人不打扰使用jQuery的'$(document).ready'之类的东西,而只是在''元素的底部写下他们的代码。这样,他们知道所有的HTML都已经被解析并准备好进行操作。此外,这也是为什么您必须在使用它的任何其他库/代码(或者任何库/代码)之前包含jQuery库的另一个原因。但对Javascript也是如此 - 应该理解的是代码在页面被解析时执行,所以它必须从上到下(如正常的编程逻辑)。 – Ian

0

您首先看到'hi'警报,因为该事件首先被绑定。

所以,当事件被基于该顺序解雇他们必然要..