0

次のような要素がいくつかあるウェブサイトがあります。

<g class="box" rel="1">...</g>
<g class="box" rel="2">...</g>
<g class="box" rel="3">...</g>
<g class="box" rel="4">...</g>
<g class="box" rel="5">...</g>

私のコードでは、これらの要素のいくつかの属性をループで変更したいと考えています。私が最初にしたことはこれでした(私にとってはうまくいきます):

for(var i = 0, l = relValList.length; i < l; i+=1){
    $(".box[rel=" + relValList[i] + "]").children().first().attr("fill","#000000");
}

jQuery のベスト プラクティスの記事を読んだところ、パフォーマンスを向上させるためにキャッシングと呼ばれるものを見つけました。

だから私はそれを試します。

//call this when page loaded
var boxes = $(".box");

//the good old loop
for(var i = 0, l = relValList.length; i < l; i+=1){
   //here is my problem
   boxes ????
}

rel 属性によってボックスから特定の要素を取得する最良の方法は何ですか?

ありがとう!

4

2 に答える 2

2

メソッドを使用できますfilter。選択した要素を繰り返し処理し、一致する要素を返します。filterメソッドは、チェーンされた文字列セレクターよりもはるかに高速です。

var $boxes = $(".box"),
    $goldenOnes = $boxes.filter('[rel="golden"]');
于 2013-04-17T06:51:36.193 に答える
0

試してみてくださいfilter。セレクターを既存の jQuery 選択に適用します。

box.filter("[rel=" + relValList[i] + "]").children().first().attr("fill","#000000");

または、ボックスをループする必要さえありません。rel次のような属性を持つすべてのボックスの最初の子を一致させることができます。

$('.box[rel] :first-child').attr("fill","#000000");
于 2013-04-17T06:50:58.893 に答える