jQuery - .prepend()为输入列表中的每个元素?

时间:2010-08-11 22:59:06

标签: jquery

是否可以对prepend中的input列表中的每个元素使用form? 下面的前缀仅仅是第一个元素的前缀 - 是否可以为所有项目添加标签:

<script>
$(document).ready(function(){
    $("#sg1").each(function(){
        $(this).prepend("<label for=\""+$(this).attr("id")+"\">"+$(this).attr("id")+"</label>");
    });
});
</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/

2 个答案:

答案 0 :(得分:7)

您需要遍历输入而不是表单,并使用类似.insertBefore()的内容,如下所示:

$("#sg1 input").each(function(){
  $('<label for="'+ this.id +'">' + this.id + '</label>').insertBefore(this);
});​

You can give it a try here

.prepend()会将一个元素作为第一个子元素插入,但如果您在使用.insertBefore()之前需要将<input>放置在传递给{的元素之前,则{{1}}不会生成子元素{3}}:)

答案 1 :(得分:1)

您只需将选择器更改为#sg1 div中的输入元素:

<script>
$(document).ready(function(){
    $("#sg1 input").each(function(){
        $(this).before(""+$(this).attr("id")+"");
    });
});
​</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>​