2011-07-03 21 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'); 

にこれが唯一のクローン化された要素内の検索を制限します。

さらに、IDがDOM内で一意であると考えられるので、クローンされた要素を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

こんにちは、ありがとう、私はあなたがセレクタの2番目のパラメータとして親要素を指定できるように表示されている構文ですか? –

+0

うーん、ダイスはまだありません。投稿時のフォームフィールドの名前はすべてquestion0です。 –

+0

コンテナIDは実際には変更されますが、質問0は検証されません。 jQueryが毎回question0のIDをクローンしていると確信していますか? –

1

は、あなたのalertはあなたにundefinedを与えることですか?これは、Idで要素を選択し、そのIdを変更してから、 id(空の結果セットを返す)で要素をルックアップするためにjQueryを使用しているためです。 alert空の結果セットの最初の要素のidを入力すると、undefinedが生成されます。あなたは成功し、ここでid属性変更している

2

$('#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の( 'ID'、 'asdasdを'))に変更してから、古いID($( '#のquestion0')を持つ要素を取得します。 attr( 'id'))、これはもはや存在しません。

関連する問題