2011-10-02 76 views
1

應用li ali:has(a)顯示出不同的結果。但是,爲什麼呢?他們不應該做同樣的事嗎?jQuery - 爲什麼`li a`和`li:有(a)`不同?

+0

'li a'匹配所有具有LI祖先的A元素; li:有(a)'匹配具有A後代的所有LI元素。 –

+0

@ŠimeVidas。你能澄清更多的區別嗎?它仍然不清楚 – Simplicity

+0

顯然,我曾經在這裏寫過一個用行話填充的答案來解答同一個問題:http://stackoverflow.com/questions/5067081/jquery-what-is-the-difference-between-the-descendant-selector -and-the-has-selec但是對Pekka的回答的評論應該足夠簡單。 – BoltClock

回答

7

難道他們不應該做同樣的事嗎?

否。在第一個示例中,您選擇了li中的所有a;在第二個中,您選擇的所有lia

manual,重點煤礦:

說明:選擇包含所指定的選擇相匹配的至少一種元素的元素。

表達$('div:has(p)')匹配<div>如果<p>其後代中任何地方存在,不只是作爲一個直接的孩子。

+0

當你說:**在第一個例子中,你選擇'li'中的所有'a';在第二個例子中,你選擇了所有具有'a' **的'li',這仍然有點令人困惑。當我選擇'li'中的所有'a'時,這並不意味着'li'必須包含'a',否則它不會被選中,哪一個與第二個一樣?你可以簡化它嗎?謝謝 – Simplicity

+2

@ Med-SWEng第一個選擇器會得到A元素,第二個選擇器會得到LI元素。這是區別... –

+0

@MedŠime說得很好。這種差異是否明顯? 「有」是「li」的一個屬性。它的意思是「給我所有具有至少一個」a「型孩子的李元素。 –

相關問題