jQuery - 使用wrap()来包装多个元素?

Pro*_*cop 40 jquery

我将如何使用wrap()包含多个元素(具有不同的类)<div>

例如,在我正在处理的表单上有一个大的复选框输入和标签列表,形式如下:

<input>
<label>
<input>
<label>
Run Code Online (Sandbox Code Playgroud)

等等

我想要包装<div>输入和标签,所以结果将是:

<div>
  <input>
  <label>
</div>
<div>
  <input>
  <label>
</div>
Run Code Online (Sandbox Code Playgroud)

谢谢!

jAn*_*ndy 93

您可以使用该.wrapAll()方法.

$('form > input').each(function(){
    $(this).next('label').andSelf().wrapAll('<div class="test"/>');
});
Run Code Online (Sandbox Code Playgroud)

如果你的标记总是完全相同的顺序,我宁愿使用:

var $set = $('form').children();    
for(var i=0, len = $set.length; i < len; i+=2){
    $set.slice(i, i+2).wrapAll('<div class="test"/>');
}    
Run Code Online (Sandbox Code Playgroud)

应该快得多.

编号:.wrapAll() ,.andSelf() ,.slice()

  • .andSelf()已在jQuery 3.0中删除.需要使用.addBack(). (4认同)
  • 这可能是最好的方法. (2认同)

Jam*_*mes 5

$('input+label').each(function(){\n    $(this).prev().andSelf().wrapAll('<div>');\n});\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n