2013-10-07 447 views
1

我動態生成一些下拉列表,然後允許它們中的一些以浮動方式移除。所以那個時候,我遇到了選擇選項(下拉)元素ID不匹配的錯誤。像下面的東西是。更改動態添加的選擇選項元素的名稱

新增加的下拉菜單。

select name="CSSAtapsClient[client_time_window_arr][0]" id="client_time_window_0">/select> 
select name="CSSAtapsClient[client_time_window_arr][1]" id="client_time_window_1">/select> 
select name="CSSAtapsClient[client_time_window_arr][2]" id="client_time_window_2">/select> 
select name="CSSAtapsClient[client_time_window_arr][3]" id="client_time_window_3">/select> 

我動態地通過javascript刪除它們之後。 (讓說我刪除第二個),這樣的話新的將被顯示爲以下,

select name="CSSAtapsClient[client_time_window_arr][0]" id="client_time_window_0">/select> 
    select name="CSSAtapsClient[client_time_window_arr][2]" id="client_time_window_2">/select> 
    select name="CSSAtapsClient[client_time_window_arr][3]" id="client_time_window_3">/select> 

所以,現在的問題我已經是,在下拉菜單的名稱是這樣的,(0,2, 3)

CSSAtapsClient[client_time_window_arr][0], 
CSSAtapsClient[client_time_window_arr][2], 
CSSAtapsClient[client_time_window_arr][3] 

因此,這是導致我的錯誤,我需要重新安排這個名字,並把它變成這個樣子,(0,1,2)

CSSAtapsClient[client_time_window_arr][0] 
CSSAtapsClient[client_time_window_arr][1] 
CSSAtapsClient[client_time_window_arr][2] 

我怎樣才能簡單地重命名這些下拉列表的名稱屬性(從0到現在有多少dropins存在)?欣賞早日答覆

編輯1

我嘗試這樣做,但沒有工作。

$('#tbl_dynamic_call_dates select').each(function(i){ 
$(this).attr('name',"CSSAtapsClient[client_time_window_arr][i]"); 
}); 
+1

確保'id'屬性是在網頁上是獨一無二的。 「這項技術的目標是避免已知會導致輔助技術問題的關鍵錯誤。」從W3C.org的這篇文章(http://www.w3.org/TR/WCAG-TECHS/H93.html) – Lan

+0

@Lan tnx處更新原始問題 – dev1234

回答

2

你可以簡單地使用復位方法.attr()值:

$('#tbl_dynamic_call_dates select').attr('name', function(i) { 
    return 'CSSAtapsClient[client_time_window_arr]['+ i +']'; 
}); 
+2

簡單的事情會更好。 – Lan

+0

@undefined你可以檢查我的下面的答案,並告訴哪個更好的性能? – dev1234

+0

@mazraara當然,通過使用'.attr()'方法,您不必創建許多不必要的jQuery對象,使用'.attr()''的回調函數更加高效。你也可以在'.each()'回調中使用'this.name = ...',這比創建對象要好。 – undefined

1

我這樣做,

$('#tbl_dynamic_call_dates select').each(function(i){ 
$(this).attr('name',"CSSAtapsClient[client_time_window_arr][" + i + "]"); 
});