在JavaScript中添加事件的方式不同,它们中的任何一个都像CSS类一样具有优先级吗?例如,内联onclick事件总是在添加addEventListener之前触发吗?如果没有,有没有办法给予一个事件优先级?
onclick
addEventListener
n6lpvg4x1#
是的
内联onclick处理程序将在DOM加载时绑定 *而使用.on或.addEventListener添加的任何内容都必须等待DOM元素首先加载。参见此处:http://jsfiddle.net/DmxNU/你的html
.on
.addEventListener
<a href="#" onclick="console.log('hello');">click</a>
你的js(这里是jQuery)
$(function() { $("a").click(console.log.bind(console, "world")); });
输出
hello world
说明
我不知道这会被记录在哪里,但可以这样想。如果你要使用DOM API来查询一个元素,然后添加一个事件侦听器,那么必须首先加载该元素。如果该元素已经包含一个onclick属性,那么它将首先被附加。
ldioqlga2#
JavaScript事件没有任何优先级。当事件被触发时,它会被添加到事件队列并尽快执行。你可以声称onclick属性事件总是首先触发是一个一般规则,这将永远是真的,但这并不是因为它们有优先级。引用自@Kevin B的评论
2条答案
按热度按时间n6lpvg4x1#
是的
内联
onclick
处理程序将在DOM加载时绑定 *而使用
.on
或.addEventListener
添加的任何内容都必须等待DOM元素首先加载。参见此处:http://jsfiddle.net/DmxNU/
你的html
你的js(这里是jQuery)
输出
说明
我不知道这会被记录在哪里,但可以这样想。如果你要使用DOM API来查询一个元素,然后添加一个事件侦听器,那么必须首先加载该元素。如果该元素已经包含一个
onclick
属性,那么它将首先被附加。ldioqlga2#
JavaScript事件没有任何优先级。当事件被触发时,它会被添加到事件队列并尽快执行。
你可以声称onclick属性事件总是首先触发是一个一般规则,这将永远是真的,但这并不是因为它们有优先级。
引用自@Kevin B的评论