2013-10-16 131 views
0

我有一個jQuery事件)在頁面上的每個DOM元素上觸發。 現在很好,但我需要一種方法來從DOM選擇中排除div(也包含子div),以防止觸發事件。 我試過jQuery的unbind(),not()off()直接在$('#myDiv'),但事件仍然觸發。如何選擇DOM中除一個元素以外的所有元素?

觸發事件(一個或多個)代碼:

$("*").each(function() { 
     // here are events bound to every DOM in the page 
     $(this).mouseover(mouseover).mouseout(mouseout).click(click); 
    }); 

我也試圖與

$("*:not(#myDiv)").each(function() { 
     // events 
     $(this).mouseover(mouseover).mouseout(mouseout).click(click); 
    }); 

,仍然無法從#myDiv刪除事件。

的HTML:

<div id="myDiv"> 
     <div class="data"> 
      <!-- --> 
     </div> 
     <div class="debug"> 
      <!-- --> 
     </div> 
     <div class="form"> 
      <!-- --> 
     </div> 

</div> 

什麼是充分DOM選擇,但不包括 #myDiv最好的辦法,所以我將能夠使用bind()on()事件綁定?

注意:我不想從DOM樹中刪除#myDiv,而是從選擇中排除它。

回答

2

你可以試試這個

$(function(){ 
    $('body > *').not('#myDiv') 
    .on('mouseover', function(){ //... }) 
    .on('click', function(){ //... }); 
}); 

An Example.

1

如果你要排除的兒童以及,你需要明確這樣做:

$("*:not(#myDiv):not(#myDiv *)") 
+0

已經嘗試過,但仍事件觸發,最有可能在#myDiv兒童 – dede

+0

@dede啊,我明白了,你要排除的孩子。固定。 –

2

嘗試.not()

$("*").not("#myDiv").each(function() { 
     $(this).mouseover(mouseover).mouseout(mouseout).click(click); 
    }); 
1

嘗試以下操作:

$("*:not(#myDiv):not(#myDiv *)") 
    .mouseover(mouseover) 
    .mouseout(mouseout) 
    .click(click) 

這不僅會排除#myDiv,還會排除#myDiv的任何子元素(您似乎正在尋找)。

相關問題