if的jquery条件不是mouseenters [重复]

这个问题在这里已有答案:

让我们举一个例子我有 4 divs div1,div2,div3,div4所有四个div都是彼此分开的,现在我想在jquery中写一个条件,

1) if mouseleaves div1' and 如果它没有进入div3或div4`,那么我想运行一个函数或警告什么...

目前iam通过检查 if mouseenters div3 or div4 来做到这一点 . 像这样的东西......

但我实际上想以相反的方式做...是否有可能实现这一目标?

$(".div11").mouseleave(function(){

if ( $(".div3,.div4").mouseenter)(function(){

 });

else{}

});

正如你所知,上面的代码不起作用,因为我搞砸了如果其他条件,但我试图写类似的东西......

回答(4)

3 years ago

如果我正确理解您的问题,这将是正确的语法:

$(".div1").mouseleave(function () {

//Check if mouse is over div3 or div4
if ($('.div3').is(':hover') || $('.div4').is(':hover')) {
  //Do something    
    } 
else {

    }    
  });

你同意吗?

3 years ago

可能吗?是 . 开箱即用?不,您可能需要自己实施 .

为此,请考虑DOM EVent Model . 为了实现"not mouse enter",您必须编写一个在每次鼠标移动时触发的自定义事件 . 它将检查光标相对于目标元素边界的位置,看它是否是's 763698 the element'的边界(你是否包括margin?padding?),如果没有则调用传入的事件处理程序 .

3 years ago

输入另一个div时应该使用变量...

例如:

var div3enter = false;
var div4enter = false;
$('.div3').mouseenter(function(){ div3enter = true; });
$('.div4').mouseenter(function(){ div4enter = true; });

$(".div11").mouseleave(function(){

if(div3enter and div4enter) {
//do something....
}

});

3 years ago

您可以使用基于超时的解决方案

jQuery(function($) {
    var timer;
    $(".div1").mouseleave(function() {
        timer = setTimeout(function() {
            alert('delayed');
        }, 100);
    });

    $(".div3,.div4").mouseenter(function() {
        clearTimeout(timer)
    });
})

演示:Fiddle