如何一次检测两个元素上的mouseleave()?

Lil*_*ool 10 javascript jquery

答案可以是vanilla js或jQuery.如果用户不再悬停在ID为"myLink"的链接或ID为"mySpan"的范围内,我想隐藏ID为"myDiv"的div.如果用户将鼠标悬停在任一元素上,"myDiv"仍将显示,但第二个用户不会将鼠标悬停在两者之一(用户的鼠标首先离开哪个元素无关紧要)"myDiv"将从脸部消失存在

换句话说,这是我在一个元素上检测鼠标离开的方式:

$('#someElement').mouseleave(function() {

   // do something

});
Run Code Online (Sandbox Code Playgroud)

但怎么说(以某种方式实际工作):

$('#someElement').mouseleave() || $('#someOtherElement').mouseleave()) {

   // do something

});
Run Code Online (Sandbox Code Playgroud)

怎么检测到这个?

lon*_*day 14

这样的事情应该有效:

var count = 0;
$('#myLink, #mySpan').mouseenter(function(){
    count++;
    $('#myDiv').show();
}).mouseleave(function(){
    count--;
    if (!count) {
        $('#myDiv').hide();
    }
});
Run Code Online (Sandbox Code Playgroud)

的jsfiddle


Fré*_*idi 10

您可以使用多重选择器:

$("#someElement, #someOtherElement").mouseleave(function() {
   // Do something.
});
Run Code Online (Sandbox Code Playgroud)

  • 这不是只为这些选择器附加2个单独的事件吗?这跟顺序调用它们是一样的吗?还是我错了?如果他在离开元素B后将鼠标悬停在元素A上,该方法不会触发吗?不应该是这种情况. (3认同)