同一元素和事件中的多个函数

时间:2011-09-28 20:05:07

标签: javascript jquery dom

如果我将一个元素中的多个函数添加到同一个事件中会发生什么?

以示例:

jQuery('#searchButton').click(function(){ /* logic 1 */ );
jQuery('#searchButton').click(function(){ /* logic 2 */ );
  1. 总是第一个被添加到事件中的函数将是第一个被调用的函数吗?
  2. 所有浏览器都支持这种类型的东西吗?
  3. 函数是异步调用的吗?
  4. 感谢

3 个答案:

答案 0 :(得分:6)

只是指出其他答案还没有的东西:jQuery确实通过将一个事件处理程序绑定到任何事件来确保事件将按照它们被添加的顺序触发(在John Hartsock的答案中引用)给定元素,并保持一个内部函数绑定范围(它具有能够删除匿名函数的额外优势,否则您将无法引用)。这适用于所有浏览器。

但是,如果将其与任何其他库混合使用或直接使用DOM,则无法保证。该标准不要求实现遵循任何顺序,因此尽管许多实现内部的FIFO结构,但不能保证。 Relevant section of the standard

答案 1 :(得分:1)

始终第一个被绑定到元素事件的函数将是第一个被调用的函数吗?

来自jQuery Docs的引用

  

如果注册了多个处理程序,它们将始终按照绑定的顺序执行。

参考

http://api.jquery.com/bind/

答案 2 :(得分:1)

他们按照他们被绑定的顺序执行。以下是jquery快速入门书的摘录:

http://www.peachpit.com/articles/article.aspx?p=1371947&seqNum=3