2013-04-30 41 views
5

我需要知道當我將鼠標滑動到不同的元素(鏈接)時,如何停止發生的mouseleave事件。如果我沒有輸入特定的元素,我如何設置一個條件,說只做mouseleave動畫?停止jQuery Mouseleave事件當進入另一個特定元素

$(activity_link).mouseenter(function() { 
    $(this).siblings(".delete_place").animate({ 
               "left" : "-28px" 
               }, 300);  
}).mouseleave(function() { 
    $(this).siblings(".delete_place").animate({ 
               "left" : 0 
               }, 300); 
}); 
+2

這將是有益的,包括你的HTML和細節這個元素。通常的做法是將這個元素作爲主元素的一個子元素,並將其完全定位。但是這很依賴於具體細節。 – 2013-04-30 13:53:55

+0

您可能應該多添加一些問題,因爲可能有更好的方法來解決您的整體問題,而不是使用'.mouseenter'和'.mouseleave'。 – CaptainBli 2013-04-30 13:54:06

回答

0

,你可以停止的事件,並防止起泡/射擊:

... 
}).mouseleave(function(event) { 
    if(mycondition) { 
     $(this).siblings(".delete_place").animate({"left" : 0}, 300); 
    } else { 
     event.preventDefault(); 
    } 
    ... 
+4

我認爲這個問題是寫作「mycondition」的問題? – 2013-04-30 14:04:39

4

使用事件relatedTarget的:

$(activity_link).mouseenter(function() { 
    $(this).siblings(".delete_place").animate({ 
     "left": "-28px" 
    }, 300); 
}).mouseleave(function (e) { 
    if (e.relatedTarget != myElem) { //where myElem is a HTML element 
     $(this).siblings(".delete_place").animate({ 
      "left": 0 
     }, 300); 
    } 
}); 
+0

relatedTarget真的很棒!謝謝:) – ravbetsky 2015-03-18 12:46:20

+0

在這種情況下,當你離開'myElem'時,'mouseleave'事件不會再被執行。我認爲它應該在鼠標離開activity_link或myElem時執行。你有任何解決方案?因爲我完全[同樣的問題](https://stackoverflow.com/questions/45126197/how-can-i-select-everything-except-specific-element)。 – stack 2017-07-16 08:44:59

相關問題