2013-10-12 259 views
0

我需要向孩子x中的孩子x添加一個類到div中。從孩子X中選擇孩子元素到孩子X

所以在這個例子中,我想將該類添加到子3,4,5,6,7,8,9,10。

現在只需將該類添加到每個第三個元素即可。

有什麼好的建議,這可以實現?

我有這樣的HTML:

<div id="days"> 
     <div></div> 
     <div></div> 
     <div></div> 
     <div></div> 
     <div></div> 
     <div></div> 
     <div></div> 
     <div></div> 
     <div></div> 
     <div></div> 
     <div></div> 
     <div></div> 
     <div></div> 
    </div> 

的Jquery:

day = 3; 
child_count = 10; 
$('#days > div:nth-child(' + day + 'n+' + child_count + ')').addClass('done'); 
+0

對不起,有點困惑與問題..在哪裏你想要他們被添加? – PSL

+0

你能寫一個你試圖完成的結果的例子嗎? – CIRCLE

+0

Okey,理解:)我想將這個類添加到子3,4,5,6,7,8,9,10。 – Kim

回答

3

你最好的選擇其實很簡單:

$('#days > div').slice(start, end).addClass('done'); 

startend是從零開始的索引)

DEMO
Docs

+0

冬青煙+++ 1 loooong time! ':)' –

+0

真的很好,正是我需要的! :)但它沒有添加一個類到「開始」孩子,所以我剛剛添加了-1的開始值。但它是一種魅力!非常感謝!! – Kim

+0

@Kim,_「開始和結束**是基於零的索引**」_! – gdoron

1

OR可以這樣做:http://jsfiddle.net/ZpZhk/或本http://jsfiddle.net/NzGVW/

請注意,這不是動態的,不僅迎合UR具體情況。

API .netUntilhttp://api.jquery.com/nextUntil/

API:.nextAllhttp://api.jquery.com/nextAll/

希望它符合上面還有您的特定需求是好的:)

代碼

$('#days > div:nth-child(3)').nextAll().addClass('done'); 

alert($('#days').html()); 

Upda TE

$('#days > div:nth-child(3)').nextUntil($('#days > div:nth-child(10)') , "div").addClass('done'); 
+1

你甚至選擇11,12,13。很高興再次見到你! – gdoron

+0

@gdoron布魯沃,我覺得O很棒,看到你':)'。 saweet,感謝用'nextUnti''現在':''檢查一下http://jsfiddle.net/NzGVW/ –

1

的另一種方法,使用:gt:lt

$("#days > div:gt(" + (day-2) + ")").filter(':lt(' + (child_count) + ')').addClass('done'); 

Fiddle

所有索引LT和GT都基於0。 gt將選擇大於你的開始計數的項目,所以gt將是day-2,即選擇大於索引1(即第二個是第三項),並且對它進行過濾以獲得比你的計數少的項目。

+1

爲什麼不把++ 1給你呢喲! –

+1

@Tats_innit謝謝。高興地收到...... :) – PSL