2013-07-03 17 views
-1
Jquery的条件

让我们举一个例子,我有4 divs DIV1,DIV2,DIV3,DIV4所有四个div的相互separted,现在我想要写在jQuery的一个条件,因为如果不mouseenters

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

目前iam通过检查if mouseenters div3 or div4来做到这一点。 这样的事情...

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

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

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

}); 

else{} 

}); 

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

+0

这句法看起来不正确.... – elclanrs

+0

安置自己的HTML。如果用户在其他人之前将div1悬停,您是否还想要特定的事情发生? – raam86

+0

亚作为我已经提到,我知道语法是错误的,所以我想知道正确的语法,如果其他条件在jquery ......为什么downvote? – Friend

回答

0

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

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

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

    }  
    }); 

你同意吗?

+0

感谢您的解决方案@ user2110309,让我实现你的代码.... – Friend

+0

现在你的代码工作,因为我希望.... :)非常感谢您的答案 – Friend

0

这可能吗?是。开箱即用?不,你可能必须自己实施。为此,请考虑DOM EVent Model。为了实现“不是鼠标输入”,你必须编写一个触发每个鼠标移动的自定义事件。它会检查游标相对于目标元素边界的位置,看它是否在元素边界“内”(包括margin?padding?),如果不是,则调用传入的事件处理程序。

0

当另一个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.... 
} 

});

0

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

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

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

演示:Fiddle