2013-10-29 67 views
0

如何選擇,除了格 「HOLA」 的所有元素和兒童選擇所有的div - DIV你好,孩子的jQuery

 <body> 
     <div id="hola"> 
      <div>example</div> 
      <span>example</span> 
     </div> 
     <div>not selected</div> 
     <span>not selected</span> 
    </body> 

$(document).ready(function() { 
     $(":not(#hola > *)").click(function(){ 
      console.log("sdf"); 
     }); 
    }); 

http://jsfiddle.net/Mp9f4/

+0

對不起,但我真的不明白你的問題。 – sinaneker

+0

如何選擇除了div「hola」和兒童的所有元素 –

+0

非常感謝@ raina77ow –

回答

1

它看起來像你真的想不選擇所有項目,但處理對#hola div(元素本身及其子元素)中任何項目的點擊。

唉,您選擇的方式 - 爲所有元素分配單獨的點擊處理程序,但#hola及其子級 - 註定要失敗,因爲點擊事件bubble

我建議稍微不同的方法:只使用document上放置的單個事件處理程序(因爲您需要監聽所有元素的點擊),並在此處理程序中檢查事件的真實目標。例如:

$(document).click(function(e) { 
    var $target = $(e.target); 
    if ($target.is('#hola') || $target.closest('#hola').length) { 
     return false; 
    } 
    console.log('sdf'); 
    }); 

JS Fiddle

+0

可以在整個文檔中添加一個點擊事件,並檢查並停止冒泡,但比使用正確的選擇器更方便。 –

2

我敢肯定你不想要選擇全部其他項目,因爲那將包括body

試試這個:

$(function() { 
    $("body > *:not(#hola)").click(function(){ 
     console.log("sdf"); 
    }); 
}); 

它選擇的body所有直系子,除了那些與ID hola

JSFiddle