2011-01-22 3 views
0

私はクラスについて質問し、そのクラスに特定のIDを与えます。例えばクラスに特定のIDを渡します

私はこのようなhtmlコードを持っている:

<div class="test">text1</div> 
<div class="test">text2</div> 
<div class="test">text3</div> 
<div class="test">text4</div> 
<div class="test">text5</div> 

私の質問は、私は、各.TESTクラスでIDを追加する方法です。

私はjqueryの中でこのような何かを考えた:

var i = 1; 
$('.test').each(function(){ 
    $('.test').attr('id','id_'+i+''); 
    i++ 
}); 

これは私が(それが(.closestで何かだと思う)、または.next動作しません) この問題を解決します。

よろしく、

フランク

編集:私は自分で問題を解決し

答えは次のとおりです。

$('.test').each(function(){ 
     $(this).attr('class','test').attr('id','id_'+i+''); 
     i++; 
    }); 

答えて

2

使用$(this)は、コールバック関数の中で現在の要素を参照するために:

var i = 1; 
$('.test').each(function(){ 
    $(this).attr('id','id_'+i); 
    i++ 
}); 
0

あなたは正しい道にあった:。

var i = 1; 
$('.test').each(function(){ 
    $(this).attr('id','id_'+i+''); 
    i++ 
}); 
+0

はい、私は正しい道にあったし、それを解決:)知っ – Frank

3

カウンターを作る理由はない、.each()に建てられた1が付属しています代わりに

$('.test').each(function(i){ 
    $(this).attr('id','id_'+i+''); 
}); 
0

使用このjQueryの:

var i, $test = $('.test'), tl = $test.length; 
for (i = 0; i < tl; i++) { 
    $test.eq(i).attr('id','id_'+i+''); 
} 

forループでiがインクリメントされるので、iの012を指定する特定の要素を選択しますと.eq(i)

+0

はい、私は、このオプションを知っているが、知りませんでした.eq(i)関数は、jqueryではない – Frank

+0

に応答してくれてありがとう、それはjavascriptです。 – jondavidjohn

+0

違反はありませんが、これは本当に悪い方法です。ループの各繰り返しに対して '.test'のDOM選択を2回実行しています。 – user113716

1

は、より速く、より簡単な次のように:

$('.test').each(function(i){ 
    this.id = 'id_' + i; 
}); 

要素のidを設定または取得.attr()のための必要はありません。

それとも、1で開始する番号を望んでいた場合は、次の操作を行います。

$('.test').each(function(i){ 
    this.id = 'id_' + (i + 1); 
}); 
関連する問題