jQuery:特別なクラスでサブアイテムに対処する方法
-
27-10-2019 - |
質問
繰り返したい ライン 要素。各 ライン 要素があります アイテム 子要素としての要素。だから最初に反復します ライン そして、私は特定のことに対処したいと思います アイテム 3番目の要素。これは私が持っているコードです:
$(".pricetable .righttable .line:not(.blank)").each(function(j) {
var currentLine = $(".pricetable .righttable .line:not(.blank)").eq(j);
currentLine.(".item").each(function(k) {
$(".pricetable .righttable .line .item").eq(i).addClass("active");
});
});
問題は、私が子供の要素に対処する方法がわからないということです アイテム クラス。
currentLine.(".item").each(function(k)
これは動作しません。
XMLフィルターは、XML以外の値({0:#2 =({})、長さ:1、prevobject:{length:3、prevobject:{0:#1 =({})、context:#1#に適用されます。 、長さ:1}、コンテキスト:#1#、selector: "。プリセテブル.righttable .line:not(.blank)"、0:#2#、1:({})、2:({})}、コンテキスト:#1#、selector: "。pricetable .righttable .line:not(.blank).slice(0,1)"})file:/users/xxx/lib/pricetable.js行112
編集:
うわー、私はそんなに良い反応が得られるとは思っていませんでした!私はこの解決策を使用していると思います:
$(".pricetable .righttable .line:not(.blank)").each(function(j) {
$(this).children(".item").eq(i).addClass("active");
});
解決
$(".pricetable .righttable .line:not(.blank)").each(function(j) {
var currentLine = $(".pricetable .righttable .line:not(.blank)").eq(j);
currentLine.find(".item").each(function(k) {
$(".pricetable .righttable .line .item").eq(i).addClass("active");
});
});
彼らがCurrentlineの直接の子供なら、あなたはただできるはずです children('.item')
代わりに find('.item')
. 。これはDOMのトラバースと呼ばれます。このページ(http://api.jquery.com/category/traversing/)にアクセスし、そこにある関数のいくつかの説明を読んでください。あなたがたくさん横断するならば、彼らは非常に便利です:)
他のヒント
$('.pricetable .righttable .line:not(.blank)').find('.item').each(function() {
// this point to child element - item
// use $(this).addClass('active');
});
私があなたの質問に答える前にわずかな改善:
var currentLine = $(".pricetable .righttable .line:not(.blank)").eq(j);
簡単に交換できます:
var currentLine = $(this);
第二に、3番目を見つけたい場合 .item
内側の要素 $(this)
, 、 使用する .find()
.find(".item:nth-child(3)");
行を反復する必要はありません。行を反復する必要がある場合は、比較してください k
に 2
(JavaScriptが0からカウントされるため)それだけです。
あなたがnthで何かをしたいなら item
それぞれの line
, 、見た目よりもはるかに簡単です:
var index = 3; // the third "item" element
$(".pricetable .righttable .line:not(.blank) .item:nth-child(" + index + ")")
.addClass("active");
上記が十分ではないことをやりたいことはありますか?
$(".pricetable .righttable .line:not(.blank)").each(function() {
$(this).find('.item:nth-child(2)').addClass('active');
});