2014-07-14 133 views
0

我通過按鈕動態插入新的html文本輸入,但是當我創建它們並分配ID時,它將ID分配給H4文本和標籤,但不是實際的輸入元素。我使用jQuery創建的元素..將id屬性添加到html輸入

  $("<h4><span style=\"color: #006085\">Target " + counter + ":</span> Enter Name :</h4><label><span>Name :</span><input type='text' value='' /></label>") 
     .attr("id", "targetname" + counter) 
     .insertBefore("#elementtarget"); 

     $("<h4><span style=\"color: #006085\">Target " + counter + ":</span> Enter Return :</h4><label><span>Return :</span><input type='text' value='' /></label>") 
     .attr("id", "targetreturn" + counter) 
     .insertBefore("#elementtarget"); 

我知道輸入在技術上是一個孩子,但如果我嘗試設置H4文本消失孩子的屬性。

回答

4

我知道輸入在技術上是一個孩子......

沒什麼「技術」這件事,這是一個孩子。您還可以設置它id,雖然:

$("<h4><span style=\"color: #006085\">Target " + counter + ":</span> Enter Name :</h4><label><span>Name :</span><input type='text' value='' /></label>") 
.find("input").attr("id", "targetname" + counter).end() 
.insertBefore("#elementtarget"); 

(。同樣地,對於下一個塊)有,創造了結構後,我用.find("input")內找到它的input,然後分配id,然後用end所以我們回到原來的jQuery對象(h4及其後代),所以我們可以使用insertBefore就可以了。

或者,你可以插入結構後添加id

$("<h4><span style=\"color: #006085\">Target " + counter + ":</span> Enter Name :</h4><label><span>Name :</span><input type='text' value='' /></label>") 
.insertBefore("#elementtarget") 
.find("input").attr("id", "targetname" + counter); 

...這意味着你不需要end()了。

+1

謝謝。我可以看到我現在出錯的地方! –

0

這是因爲你的鏈接順序。如果在追加到DOM之前查找並添加屬性,則最終只會添加輸入(因爲找到了)。

就再追加元素改變您的ID:

$("<h4><span style=\"color: #006085\">Target " + counter + ":</span> Enter Return :</h4><label><span>Return :</span><input type='text' value='' /></label>") 
.insertBefore("#elementtarget") 
.find('input') 
.attr("id", "targetreturn" + counter); 
0

如何設置的HTML字符串的ID?

$("<h4><span style=\"color: #006085\">Target " + counter + ":</span> Enter Return :</h4><label><span>Return :</span><input type='text' value='' id='targetreturn" + counter + "'/></label>") 
    .insertBefore("#elementtarget"); 

JsFiddle demo

PS:記得在提交前解析輸入字段;否則您將無法獲取您的數據......或在輸入字段中同時設置「名稱」:p