2014-01-06 114 views
3

所以我覺得我的標題幾乎含糊不清,但事實是,我甚至不知道如何澄清...因此這個問題。兄弟姐妹/兒童/父母的JQuery選擇器

的Html

<tr> 
    <div class="thisis(this)inmyexample"></div> 
    <div class="stuff"> 
    <div class="foo"></div> 
    </div> 
</tr> 

我的問題是關於選擇的差異。讓我們假設.stuff$(this)兄弟如果我用這個:

$(this).closest('tr').find('.stuff .foo') 

現在,我知道這不是有效的編碼,但它只是作爲一個簡單的例子。有了它,我會找到所有.foo類別.stuff的子女。

如果我用這個:

$(this).siblings('.stuff .foo') 

我不會發現任何東西。這可能是我對jquery談話的經驗不足,但爲什麼不會有那種類型的選擇器(你稱之爲使用空間的選擇器或者同時使用這兩個選擇器的選擇器,如'.stuff.foo'?)可以使用.siblings之類的東西工作?我的期望是,它會找到.stuff級別的所有兄弟姐妹,然後找到.stuff的所有子級和.foo級別的所有子級。這是不是工作,因爲兄弟姐妹/孩子/父母正在尋找兄弟姐妹/父母/孩子,不會看過去?

我知道我可以用這個:

$(this).siblings('.stuff').children('.foo') 

,我實現我的目標。我只是好奇,爲什麼我的上面的選擇器(如果這是它正確調用)不起作用。

在此先感謝!

+0

@PranavRam所以這是因爲'.stuff foo'永遠不會是任何事情的兄弟姐妹,對吧? – Aarmora

+0

這是無效的HTML標記 –

+0

@ A.Wolff我不覺得HTML是真正關鍵的問題,除了知道'.stuff'和'$(this)'是兄弟姐妹和'.foo'是孩子'.stuff'。我錯了嗎? – Aarmora

回答

2

你回答了你自己的問題,你不會找到任何與$(this).siblings('。stuff .foo')的東西,因爲.foo不是$(this)的兄弟,它有點像'孫子'。使用該選擇器,它將查找擁有.stuff父母的.foo兄弟姐妹,而您擁有$(this),.stuff和.foo的同胞,.stuff的孩子,而不是$(this )。

+0

這就是我的想法。謝謝! – Aarmora