2010-08-12 31 views
0

我試圖用div標籤動態地分割每個生成的標籤和硬編碼輸入對。我似乎能夠讓div圍繞標籤(請參閱下面的源代碼),但我希望div也包圍輸入。jQuery - 在當前這個元素之後放置一個結束div?

這隻有在輸入的div環繞:

 

​<script> 
$(document).ready(function(){ 
    $("#sg1 input").each(function(){ 
    $("​<div>​<label for=\""+$(this).attr("name")+"\">"+$(this).val()+"​</label>") 
.insertBefore(this); 
    }); 
}); 
​</script> 

​<form id="sg1"> 
    ​<input name="member1" id="member1" value="jack" /> 
    ​<input name="member2" id="member2" value="carter" /> 
    ​<input name="member3" id="member3" value="jackson" /> 
    ​<input name="member4" id="member4" value="tielk" />  
​</form>​ 

http://jsfiddle.net/RM5wG/12/

與其讓div的只是周圍的標籤,我想弄清楚如何讓jQuery來的追加div來的整雙鞋,即最終的前景,如:

 
​<div> 
​<label>...​</label> 
​<input /> 
​</div> 

回答

4

可以使用.wrapAll()這樣做:

$(function(){ 
    $("#sg1 input").each(function(){ 
    $(this).wrap('<div></div>').parent() 
      .prepend('<label for="'+ this.name +'">'+$(this).val()+'</label>'); 
    }); 
}); 

You can check it out here。或者,更接近你的原文:

$(function(){ 
    $("#sg1 input").each(function(){ 
    $(this).before('<label for="'+ this.name +'">' + $(this).val() + '</label>') 
      .prev().andSelf().wrapAll('<div></div>'); 
    }); 
}); 

You can give it a try here,我們所做的輸入之前被添加標籤,然後抓住它,並將它與.prev().andSelf()加入到集合,然後我們只是調用兩個元素上的.wrapAll()

1
$("input #sg1").each(function(){ 
    $(this).wrap("<div></div>"); 
    $("​​<label for=\""+$(this).attr("name")+"\">"+$(this).val()+"​</label>").insertBefore(this); 
} 
相關問題