鼠标事件jquery的多个函数

时间:2014-09-16 11:57:52

标签: javascript jquery mouseevent

我正在研究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如何处理这个问题?第二个鼠标事件声明功能是否会覆盖第一个?有时我看到两件事情都有效但有时却没有。

1 个答案:

答案 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

...在控制台中。