2011-01-19 113 views
3

我有這樣的HTML:jQuery選擇找到的第一個孩子在每個一組元素的

<div id="tags"> 
    <ul> 
     <li><input type="text" /><a href="#">First Link</a> <a href="#">Second Link</a></li> 
     <li><input type="text" /><a href="#">First Link</a> <a href="#">Second Link</a></li> 
     <li><input type="text" /><a href="#">First Link</a> <a href="#">Second Link</a></li> 
     <li><input type="text" /><a href="#">First Link</a> <a href="#">Second Link</a></li> 
     <li><input type="text" /><a href="#">First Link</a> <a href="#">Second Link</a></li> 
    </ul> 
</div> 

我會用什麼選擇器來捕捉每個li元素的第一錨,和怎麼樣的第二錨每個李沒有添加任何額外的ID或類?

嗯,我想這一點:

$('#tags a:last-child') 

,我能夠得到各里的第二錨定,但我不明白爲什麼工程。一個元素不需要在錨點內部選擇一些東西,但它能夠選擇每個李的第二個錨點。後來我不關心它是如何工作的,只要它的工作,所以我想我會做同樣的事情讓這將是第一個元素:

$('#tags a:first-child') 

然而,這並不工作,以獲得第一每個李的錨。有任何想法嗎?

編輯: 所以我想我做對了,但它沒有工作,因爲我有一個輸入文本框,似乎使它無法正常工作。爲什麼一旦輸入框在那裏就不能工作了?

+0

爲了您將來的參考,請注意,解決方案與「如何在特定表的_nth_列中選擇`td`元素?」相同 – Phrogz 2011-01-19 21:12:43

+0

下面的答案很好,但是你的`$(「#tags a:first-child」)`爲我工作...... – mraaroncruz 2011-01-19 21:13:18

回答

3

的「:第一個/最後兒童「選擇器(實際上所有的」兒童選擇器「)都考慮到全部孩子們,即使是那些不使用你想要過濾的標籤。

因此$('#tags a:last-child')的作品,因爲在這種情況下錨是最後一個孩子。

但是,$('#tags a:first-child')不起作用,因爲輸入是第一個孩子。

你可以使用$('#tags a:not(:last-child)'),但是這會得到所有不是最後一個孩子的錨點標籤,所以如果你有三個,它會選擇前兩個,如果在最後一個錨點後面有另一個元素,它將選擇所有錨。

或者您可以使用$('#tags a:nth-child(2)'),但當然這裏它依賴於第一個錨是第二個孩子的事實,所以如果您刪除輸入元素或在第一個錨前面添加更多元素,工作。 (你可以認爲子選擇器比標籤選擇器有更高的優先級,所以它首先過濾掉子標籤,不管標籤或類是什麼,然後它會查看你想要的標籤,哪個是計數器直觀和奇數,我知道:))

2
$('#tags li').find('a:first') ... 

你也可以這樣做:

$('#tags li').find('a').each(function(i){ 
    if(i==0){ //first item 

    } 
    if(i==1){ //second item 

    } 
}); 
5

我會用什麼選擇器來捕捉每個li元素的第一錨

$("#tags li a:first-child")$("#tags li a:nth-child(0)")

一個d如何不添加任何額外的ID或類,每個李的第二個錨?

$("#tags li a:last-child")$("#tags li a:nth-child(1)")

爲什麼:*-child選擇的作品是因爲它是在a標籤,而不是一個標籤的孩子一個過濾的原因。在a標籤的孩子

a :first-child =>過濾器

a:first-child =>在a標籤的濾波器中選擇


工作示例這裏:http://jsfiddle.net/7vupb/

+0

感謝您解釋冒號前的空格。是的,這對我發佈的原始代碼起作用。我現在編輯原始帖子,因爲我在兩個錨點之前也有一個輸入框,我認爲這兩個錨點是不相關的,並且從未張貼過它,但顯然這是它不適用於我的原因。我編輯了第一篇文章以顯示更改。在這種情況下選擇器需要什麼? – Joker 2011-01-19 21:43:29

1

這是你想要什麼:

$('#tags a:nth-of-type(1)') 

這將選擇「#tags」元素是第一錨子元素的所有「A」的後代家長。爲第二個錨使用2而不是1。

相關問題