2011-02-05 137 views
2

使用jQuery選擇器,是否可以選擇不是其他選擇器元素後代的所有元素。選擇不是指定元素的後代的所有元素

例如,我想選擇所有的a標籤,它們是而不是標籤的後裔th標籤。我可以看到做是正確的,現在唯一的辦法如下:

$('a').filter(function() { 
    return $(this).closest('th').size() == 0 
}) 
+2

你是指兄弟姐妹還是後代?你的代碼建議後者 – lonesomeday 2011-02-05 23:47:20

+0

正如@日常暗示的:**`a`元素*不能是* th元素的兄弟**。你能發佈你正在使用的HTML嗎? – 2011-02-05 23:52:57

回答

6

假設你正在尋找的後裔(因爲有a元素作爲同級th元素是無效的HTML),你可以使用:not僞選擇這樣做:

$('a:not(th a)'); 

這應該是相當快使用document.querySelectorAll現代瀏覽器,但可能會爲舊版本的IE會比原來慢。

看到一個簡單的演示在這裏:http://jsfiddle.net/JR5sP/

0

假設你想要做你的問題問(不論無效的HTML事實)和過濾元素與特定的兄弟姐妹,

你可以做這樣的:

$('a').filter(function() { 
    return $(this).siblings('b').length == 0; 
}).css('color', 'orange'); 

HTML:

<div> 
    <b>Hello there</b> 
    <a>Don't select me!</a> 
</div> 

<div> 
    <a>Select me!</a> 
    <a>Select me too!</a> 
</div> 

http://jsfiddle.net/JR5sP/1/

相關問題