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 回答