在同一个div中包装标签和输入

时间:2014-06-10 13:54:25

标签: jquery html jquery-selectors dom-traversal

我正在尝试将radio输入及其label包装在一个div中,但不知何故它不包含输入。我的代码是:

HTML是:

<div class="payment_processor-section">
    <input id="input_0" class="form-radio" type="radio" checked="checked"  name="payment_processor" value="1">
    <label for="input_0">Credit Card</label>
    <input id="input_1" class="form-radio" type="radio" name="payment_processor" value="0">
    <label for="input_1" style="">I will send payment by check</label>
</div>

我正在尝试的Jquery是:

$('.payment_processor-section input').map(function(index){
    $(this, $("label[for='"+this.id+"']") ).wrapAll('<div class="abc">');
});

请帮忙。

4 个答案:

答案 0 :(得分:13)

试试这个:

$('.payment_processor-section input').map(function(index){
  $(this).next().andSelf().wrapAll('<div class="abc">');
});

fiddle

答案 1 :(得分:8)

http://jsfiddle.net/43jdq/

$('.payment_processor-section input').map(function(index){
 $(this).add($("label[for='"+this.id+"']")).wrapAll('<div class="abc">');
});

答案 2 :(得分:0)

由于javascript和jQuery有各种方法可以实现相同的结果,你也可以使用slice和a for in循环

var collection=$('.payment_processor-section *')
for(var i = 0; i < collection.length; i+=2) {
      collection.slice(i, i+2).wrapAll("<div class='group'></div>");
}

答案 3 :(得分:0)

为jQuery v3.0更新@Alex Char解决方案

$('.payment_processor-section input').map(function(index){
  $(this).next().addBack().wrapAll('<div class="abc">');
});

.andSelf()在v1.8中已被弃用,而在v3.0中已被删除,您可以改用.addBack()