我有6個元素的集合,我想過濾每個第二個和第三個元素,所以我想要元素2,3,5和6.我試過.filter(':nth-child(2n+1)'));
但很明顯,過濾2,4和6.從每個元素的三元組中選擇第二個和第三個元素
我想要的另一種方式是刪除元素1和4,但我找不到一個jQuery函數是相反的過濾器,將刪除元素從集合中。
我有6個元素的集合,我想過濾每個第二個和第三個元素,所以我想要元素2,3,5和6.我試過.filter(':nth-child(2n+1)'));
但很明顯,過濾2,4和6.從每個元素的三元組中選擇第二個和第三個元素
我想要的另一種方式是刪除元素1和4,但我找不到一個jQuery函數是相反的過濾器,將刪除元素從集合中。
以你爲例,我不認爲你真的想要2n和3n。你想每個3組中的第二和第三?那麼這些任何一個應該工作:
.filter(':nth-child(3n+2), :nth-child(3n+3)'));
.filter(':not(:nth-child(3n+1))');
.filter(':not(:nth-child(1),:nth-child(4))')
啊,我怎麼能忘記! – 2012-04-09 19:25:03
順便說一句,如果你真的需要選擇每2n和3n元素,你應該使用.filter(':nth-child(2n),:nnth-child(3n)') – 2012-04-09 19:26:39
@VladMinaev感謝您的回答,但我覺得喜歡ephemient答案好一點,我可以用它來比6更大的集合,所以我給了他們正確的答案。仍然給你一個+1。 – 2012-04-09 19:52:16
我認爲你不能只用一個nth-child
做到這一點。我不知道你想做什麼,但如果你想給它一個風格或類別,事件或類別的東西,你可以把它們全部並從第1和第4中刪除:
$('div').addClass('red');
$('div:nth-child(3n+1)').removeClass('red');
活生生的例子:http://jsfiddle.net/gnbMH/
您也可以使用兩個nth-child
s到得到它的工作:
$('div:nth-child(3n+2)').addClass('red');
$('div:nth-child(3n+3)').addClass('red');
活生生的例子:http://jsfiddle.net/gnbMH/1/
您還可以結合兩個nth-child
秒,然後你會得到這樣的事情:
var elems = $('div:nth-child(3n+2)');
$('div:nth-child(3n+3)').each(function(i,elem) {
elems.push(elem);
});
$(elems).addClass('red');
活生生的例子:http://jsfiddle.net/gnbMH/2/
未來,不要將關鍵的應答代碼留在JSFiddle中:也將它放在答案中! :) – Phrogz 2012-04-09 19:27:26
@Progrog謝謝。我通常這樣做,但我不知道爲什麼不現在......我編輯了評論 – 2012-04-09 19:57:30
嘗試使用:not(:nth-child(3n+1))
..喜歡的東西.filter(':not(:nth-child(3n+1))').
您還可以使用filter
與函數(接受單個參數,該參數是匹配元素的從零開始的號碼):
$('div').filter(function(n) { return n%3!=0 })
見我的jsfiddle驗證的概念在這裏:
你能否解釋一下「每2N和3N」如何包括#5,但不包括#4?你的意思是_「我想要元素2,3,4和6」_? – Phrogz 2012-04-09 19:28:50
我同意Phrogz您的問題沒有正確說明。在我看來,你真正想要做的是跳過第一個元素,然後跳過第三個元素。換句話說,你想跳過每個有n%1 = 1的元素。 – 2012-04-09 19:48:14
@Progrog不,我認爲ephemient答案解釋了我想要的更好。 「每組3人中的第二和第三」 – 2012-04-09 19:56:51