2013-03-18 55 views
0

,如果我有以下標記:擁有jQuery的忽視事件的孩子

<ul id="level1"> 
    <li> 
     <a href="#">Test</a> 
     <ul id="level2"> 
      <li> 
       <a href="#">Test</a> 
      </li> 
     </ul> 
    </li> 
</ul> 

基本上,如果我將鼠標懸停在1的水平,我需要做的事情。但是,當我將鼠標懸停在level2上時,它會觸發它,因爲它位於level1內部。有沒有辦法讓這隻發生,如果我把鼠標懸停在level1上。

我的意思的例子:

http://scottymeuk.in/Netr

左邊的方框,在右邊框的父母。但我需要在左框(父)上方懸停時發生的事情,但不是正確的框(孩子)。

謝謝。

對不起,如果我沒有足夠好地解釋我的問題。

+1

請發佈您的代碼。 – j08691 2013-03-18 14:26:46

+3

似乎你需要'event.stopPropagation()' – vmeln 2013-03-18 14:26:46

+2

http://stackoverflow.com/questions/2364629/jquery-stop-child-triggering-parent-event可能會幫助 – Pete 2013-03-18 14:28:35

回答

3

一個解決辦法是打電話event.stopPropagation對孩子:

$("#parent").on("someevent", function(){ 
    // do stuff 
}); 

$("#child").on("someevent", function(e){ 
    e.stopPropagation(); // prevent the event from bubbling to the parent. 
}); 
2

請參閱事件對象的文件...

http://api.jquery.com/category/event-object/

event.stopPropagation();

是你所需要的

$('#level2').hover)function(e) { 
    e.stopPropagation(); // stops events from triggering in children 
},function (e) {} 
+1

到達'#level1'時已經太晚了;這個答案是不正確的。 – 2013-03-18 14:30:43

+0

對不起的錯字...意味着孩子的元素 – zgr024 2013-03-18 14:32:26

0

$('level1').hover(function(){ if(!IsMouseOver($(this).find(level2)){ do what you want it to do }; });

我還沒有測試過,但你得到的邏輯。鼠標是否在level1上?是。如果它超過了level1並且沒有超過level2做我想要的