2012-02-16 97 views
3

我有此24 'DD' 和我想獲得:
'DD ID = 「dede0」 ' DD ID = 「dede1」 ....如果我使用此:改變html元素

var i=0; 
     var dede="dede"; 
     var dedos="dede" 
      $('dd').each(function(){ 

      dede=dede&i;       
      $('dd').attr("id",dede); 
      i++; 
      dede=dedos; 
      }); 

我改變了一般'dd'的id但是,我可以改變每一個特定的dd ID嗎?

非常感謝你,

阿爾瓦羅

回答

1

呦應儘量

$('dd').each(function(index, el){ 
    //you could also use el.id       
    this.id = "dede"+index; 
    }); 

,當你重複使用each()this指的是當前元素,你可以使用索引屬性設置爲「指數」在評論中建議的各種ID

+0

是你還在使用'i',而不是'index'以防萬一需要的循環之外的'i'(原因即改變爲索引會有輕微的副作用)? – Chris 2012-02-16 11:08:21

+0

@Chris改變索引會更好,我只是在匆忙,沒有想到它,我會更新代碼 – 2012-02-16 11:18:28

+0

酷。我只是好奇,因爲你明確地把它放在參數列表中,大多數人不會打擾。 :) – Chris 2012-02-16 11:24:42

1

試試這個:

var i = 0; 
var dede = "dede"; 
var dedos = "dede" 

$('dd').each(function() { 
    dede = dede + i;       
    $(this).attr("id", dede); 
    i++; 
    dede = dedos; 
}); 
+0

你可以簡單地做'this.id = dede'並保存一個電話 – 2012-02-16 11:07:56

1

與您的代碼的問題是,你再次$('dd')選擇所有迴路中<dd>元素,讓每一次迭代中設置的所有<dd>標識。因此,在循環結束時,所有元素與最新有效的i都有相同的ID。爲了解決這個問題,您可以使用當前元素,如this(或由jQuery each()方法提供的e)所示。

最緊湊的解決方案,我能想到的是:

$('dd').each(function(i, e){      
    e.id = 'dede' + i; 
});​ 
+0

驚人的和最佳的!非常感謝你!!! – 2012-02-16 11:21:09