2011-07-03 56 views
2

更新克隆元素的ID是否存在問題?我認爲我的語法在這裏是正確的,但它沒有更新。JQuery,不能更改克隆元素的ID?

function addQuestion(){ 
// Clone the first question Container and give it a new ID 
$('#questionContainer0').clone().attr('id','questionContainer'+currentQuestion).appendTo('#questionArea'); 


// Assign the new ID to the text area field (This is not working) 
$('#question0').attr('id','asdasd'); 
var test = $('#question0').attr('id'); 
alert(test); 
} 

Question0是原始的克隆questionContainer0(DIV)的子元素(文本域)

回答

3

變化

$('#question0').attr('id','asdasd'); 

$('#question0', '#questionContainer'+currentQuestion).attr('id','asdasd'); 

這將限制只克隆的元素中搜索。

更確定的是,在添加DOM中的克隆元素之前,您應該這樣做,因爲ID應該在DOM中是唯一的。

function addQuestion(){ 
// Clone the first question Container and give it a new ID 
var newElement = $('#questionContainer0').clone().attr('id','questionContainer'+currentQuestion); 
newElement.find('#question0').attr('id','asdasd'); 
newElement.appendTo('#questionArea'); 

} 
+0

嗨加比,謝謝,所以你顯示的語法允許我指定父元素作爲選擇器中的第二個參數? –

+0

嗯,仍然沒有骰子 - 發佈時的表單域都命名爲question0。 –

+0

我驗證了questionContainer ID確實在更改,但問題0沒有。我們確定jQuery每次都克隆了question0的ID嗎? –

1

是您alert給你undefined?這是因爲你正在通過Id選擇一個元素,更改該Id,然後使用jQuery通過id(它返回一個空結果集)來查找元素。 alert在空結果集中的第一個元素的id將產生undefined

2

你在這裏成功改變id屬性:

$('#question0').attr('id','asdasd'); 

但是當你嘗試訪問該元素的原始(不再存在)中的下一行id

var test = $('#question0').attr('id'); 

這可能是問題嗎?

+0

確實如此。我需要重新考慮這一點,因爲我只需要更新新克隆的元素的ID,所以我相信我需要導航到父克隆的子元素並以此方式進行更新。 發現這個帖子從2009年,是類似於我想要做的:http://charlie.griefer.com/blog/2009/09/17/jquery-dynamically-adding-form-elements/ –

0

您更改ID($( '#question0')。ATTR( '身份證', 'asdasd')),然後得到與舊的ID($( '#question0')的元素。 attr('id')),不再存在。