随着在 javascript 中添加事件的不同方式,它们中的任何一个都像 css 类一样优先吗?例如,内联 onclick 是否总是会在添加 addEventListener 之前触发?
如果没有,有没有办法给事件优先级?
随着在 javascript 中添加事件的不同方式,它们中的任何一个都像 css 类一样优先吗?例如,内联 onclick 是否总是会在添加 addEventListener 之前触发?
如果没有,有没有办法给事件优先级?
是的
内联onclick
处理程序将在DOM 加载时绑定
而您添加的任何内容.on
或.addEventListener
必须等待 DOM 元素首先加载。
见这里:http: //jsfiddle.net/DmxNU/
你的 html
<a href="#" onclick="console.log('hello');">click</a>
您的 js(在这种情况下为 jQuery)
$(function() {
$("a").click(console.log.bind(console, "world"));
});
输出
hello
world
解释
我不确定这会记录在哪里,但请以这种方式考虑。如果您要使用 DOM API 来查询元素,然后添加事件侦听器,则必须先加载该元素。如果该元素已经包含一个onclick
属性,则该属性将首先被附加。
JavaScript 事件没有任何优先级。当事件被触发时,它会被添加到事件队列中并尽快执行。
您可以声称 onclick 属性事件总是首先触发是一般规则,并且总是如此,但这并不是因为它们具有优先级。
引用自@Kevin B 的评论