2014-12-08 54 views
0

我想使用jQuery來選擇頁面上除了某個div以外的所有內容。我的問題類似於this answer,但該解決方案只選擇div,我想選擇所有內容jQuery - 選擇一切,但

在這example Fiddle,我想選擇一切沒有,或不是一個元素的後代,一類「孩子」。所以點擊「孫子」和「孩子」不應該顯示日誌條目,但點擊「父母」或圖像會。

該頁面將有一個非常複雜的結構,因此像this這樣的東西不可行。

回答

1

使用此代碼,此代碼排除.kids元素和的內部元素類

$('body').click(function(e) { 
    if(!$(e.target).closest('.kids').length){ 
     console.log(e.target); 
    } 
}); 

DEMO

+0

謝謝@Girish,這正是我所知道的尋找!只是想知道(出於好奇)是否只有使用選擇器的等效方法? (no if語句,只是選擇器) – dayuloli 2014-12-08 07:37:51

+1

@dayuloli沒有辦法阻止來自一個選擇器的外部事件,':not()'功能對所選元素有效,但它不能阻止'not()'內部元素 – Girish 2014-12-08 08:47:16

+0

感謝澄清! – dayuloli 2014-12-08 08:48:04

2

你可以嘗試不選擇器

$('body *').not('.kids, .kids *'); 

,或者如果你正在嘗試註冊一個事件處理程序,然後

$(document).on('click', ':not(.kids, .kids *)', function(){ 
}) 
+0

謝謝您的回答。是的,我也試過這個。但它仍然顯示出來。 http://jsfiddle.net/padxaupu/7/ – dayuloli 2014-12-08 07:28:35

+1

@dayuloli請參閱http://jsfiddle.net/arunpjohny/7hr6covy/1/ – 2014-12-08 07:55:00

+0

感謝您的更新答案。它完美的工作!但我接受了Girish的回答,因爲他首先發布了相同的答案。儘管如此,感謝您的幫助 – dayuloli 2014-12-08 07:57:17

1

使用e.currentTarget jQuery中

$("#parent").not($('.kids')).click(function(e) { 
    console.log(e.currentTarget); 
}); 
+0

感謝您的回答。但是,當「孩子」div被點擊時,使用'currentTarget'仍然會觸發。我想要這樣,當「孩子」或「孫子」div被點擊時,控制檯上沒有任何東西返回。另外,我希望頁面上的所有內容都被選中,而不僅僅是「父級」div中的內容...... http://jsfiddle.net/padxaupu/8/ – dayuloli 2014-12-08 07:31:51