2012-07-19 101 views
0

這是我的jQuery代碼中添加HTML ....前置不會img標籤

$("#addinp").click(function() { 
    $(this).prepend('<label>Item ' + i + '<span class="small"></label><input type="text" name="middlename[]" />'); 
}); 

這是我的HTML ....

<form id="form" name="form" method="post" action="?a=run"> 
<input type="text" name="firstname" id="firstname" /> 
<input type="text" name="lastname" id="lastname" /> 
<input type="text" name="middlename[]" id="middlename[]" /> 
<img src="add_another_name.png" id="addinp"/> 
<button type="submit">Add</button> 
</form> 

這不會再拍輸入出現前「添加另一個按鈕」 - 惱人這是如果我這樣做...

$('form').prepend('<lab........ 

前面加上它會工作的形式.......但它只是不會出現之前的圖像...

+0

我建議''應'<標籤類= 「小」>項 '+ I +'' – ManseUK 2012-07-19 16:05:40

+0

的標籤應要麼有一個用於屬性匹配輸入的id,或者應該包含輸入。就目前來看,這是無用的。 – Quentin 2012-07-19 16:06:58

+0

您正在添加無效的HTML。 – 2012-07-19 16:03:20

回答

3

而不是prepend(),嘗試before()如下所示,與有效的HTML。

prepend()在此處不起作用,因爲它將傳遞的元素作爲它的子元素插入到目標的開始位置。

$("#addinp").click(function() { 
    $(this) 
    .before('<label>Item '+i+'<span class="small"></span></label><input type="text" name="middlename[]" />'); 
}); 

您還可以使用.insertBefore()

$("#addinp").click(function() { 
    $('<label>Item '+i+'<span class="small"></span></label><input type="text" name="middlename[]" />').insertBefore(this); 
}); 

不要忘了糾正你的上述HTML。

+0

.before()工作了一個款待....謝謝大家:D – AttikAttak 2012-07-19 16:48:01

+0

@AttikAttak不客氣 – thecodeparadox 2012-07-19 16:49:29

2

the manual

的.prepend()

您不能插入內容的方法插入指定的內容,每個元素的jQuery的集合中的第一個孩子圖像的第一個孩子,因爲圖像不能有孩子。

您想要before()在圖像之前插入內容。