html 要素の倍数を選択する方法を教えてください。この例では、4 番目の要素から 7 番目の要素まで、8 番目の要素から 11 番目の要素まで、というように選択することに関心があります。
5 に答える
次のようにnth-child
とを組み合わせてみてください。not
:nth-child(-n+7):not(:nth-child(-n+3))
奇妙に思えるかもしれませんが、最初のnth-child
選択では要素 1 から 7 が選択され、2 番目の要素では要素 1 から 3 が削除され、要求どおりに 4 番目、5 番目、6 番目、7 番目が残ります。
jqueryセレクターは配列を返すので、実際に行くことができます
var four_to_seven = []
var $results = $('.myselector');
for(var i in $results){
if(i>=3 && i<=6){
four_to_seven.push($results[i]);
}
}
要素の「範囲」を選択したいようです。「倍数」という言葉は私を驚かせました。きれいではありませんが、次のように nth-child を使用できます。
$(":nth-child(4), :nth-child(5), :nth-child(6),:nth-child(7)")
API ドキュメント: http://api.jquery.com/nth-child-selector/
JQuery オブジェクトは、セレクターを介して見つけたすべての要素のリストを保持します。このリストのインデックスを使用してアイテムを取得できます。
例えば:
$("div")[1] <- second div in the document
$("div")[3] <- fourth div in the document.
JavaScript を使用してそれらをループできます。
それが役立つことを願っています!
1 回限りの場合は、セレクター:gt
と:lt
セレクターを組み合わせて使用できます。たとえば、次のようになります。
var divs = $("div:gt(2):lt(4)"); // Fourth through seventh inclusive
それらをグループでループしたい場合、最初の数値 ( ) は変化します:gt(x)
が、2 番目の数値は変化しません (前者の結果に適用されるため)。ソース
ループしていると思いますが、それらをすべて取得してから使用しますslice
。「4 番目から 7 番目」と「8 番目から 11 番目」はどちらも 4 つのグループですが、「1 番目から 3 番目」は 3 つのグループであるため、開始点 (4 番目) は少し奇妙です。
3 人グループでの使用slice
:
jQuery(function($) {
var divs = $("div");
var index;
var group;
// By threes rather than fours
group = 0;
for (index = 0; index < divs.length; index += 3) {
++group;
divs.slice(index, index + 3).append(
"<span>Group " + group + "</span>"
);
}
function display(msg) {
$("<p>").html(msg).appendTo(document.body);
}
});