1

配列に一致する要素の rel 属性を追加したいので、たとえば配列は次のとおりです。

var targetVal = ['1','2','4'];

同じクラスの 5 つの要素:

<a class="link" href="1.html">
<a class="link" href="2.html">
<a class="link" href="3.html">
<a class="link" href="4.html">
<a class="link" href="5.html">

rel属性で2行目、3行目、5行目を対象にしたいです。

 $(".link").each(function(index) {
       $(this).attr("rel", "group");
    });

配列に基づいて上記のスクリプトのインデックスを作成するにはどうすればよいですか?

4

3 に答える 3

1
var targetVal = ['1','2','4'];

$.each(targetVal, function(index, val) {
       console.log(val);
       $('.link').eq(val).attr("rel", "group");
});

jsFiddle の例http://jsfiddle.net/roXon/T7zR8/

于 2012-06-26T13:09:48.397 に答える
1

$.each()を使用して配列を反復処理し、eq()を使用して特定のインデックスでリンクを取得できます。

var $links = $(".link");
$.each(targetVal, function(value) {
    $links.eq(value).attr("rel", "group");
});
于 2012-06-26T13:07:38.340 に答える
0

これはより最適であり、リンクのセットを一度だけ評価し、を使用する代わりにそのリストに直接アクセスします.eq()

var targetVal = [1, 2, 4];
var links = $('.link');
$.each(targetVal, function(i, n) {
    links[n].setAttribute('rel', 'group');
});

または、新しいブラウザーで jQuery を使用しない場合:

var targetVal = [1, 2, 4];
var links = document.querySelectorAll('.link');
while (targetVal.length) {
    links[targetVal.pop()].setAttribute('rel', 'group');
}
于 2012-06-26T13:22:09.773 に答える