我正在研究jQuery插件。为了区分我的逻辑,我做了类似的事情:
$element.on({
mouseenter: function(){
//do something special
}, mouseleave: function(){
//do something else special
}
});
//more stuffs
然后在上面我再次这样做,但与其他功能体
$element.on({
mouseenter: function(){
//do something not special
}, mouseleave: function(){
//do something else not special
}
});
jQuery如何处理这个问题?第二个鼠标事件声明功能是否会覆盖第一个?有时我看到两件事情都有效但有时却没有。
答案 0 :(得分:2)
鼠标事件的第二次声明是否会覆盖第一个?
没有
jQuery如何处理这个问题?
它按照附加顺序执行事件处理程序。来自the documentation(页面下约40%):
绑定到元素的事件处理程序的调用顺序与它们绑定的顺序相同。
例如,如果你有:
var div = $("#someDiv");
div.on("click", function() { console.log("one"); });
div.on("click", function() { console.log("two"); });
div.on("click", function() { console.log("three"); });
...然后点击div会给你
one two three
...在控制台中。
请注意,如何找到附加处理程序的元素并不重要。假设您在页面上只有一个div
,它有id
"someDiv"
,它是body
的第一个孩子(只是为了简化选择器)。如果你有:
$("#someDiv").on("click", function() { console.log("one"); });
$(document.body).children().first().on("click", function() { console.log("two"); });
$("div").on("click", function() { console.log("three"); });
然后点击div,你就会得到
one two three
...在控制台中。