2013-07-03 48 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

相關問題