使用.before(); 之后(); 包装元素

Jac*_*Dev 5 jquery

我正在尝试包装<label>,<input type="text" /><select>元素<div class="formItem"></div>来修复我无法直接编辑的表单上的某些定位.出于某种原因,当我尝试使用以下代码时:

$("label").before("<div class=\"formItem\">");
$("input[type=text]").after("</div>");
$("select").after("</div>");
Run Code Online (Sandbox Code Playgroud)

它不起作用.它只是<div class="formItem"></div>在每<label>一个对我没有帮助之前添加.

我已经看了一下,.wrap();但我不知道如何使用它来包装多个元素,就像我正在尝试做的那样.以下是HTML标记的示例:

<label>Text Box</label>
<input type="text" name="Text Box" />

<label>Select Menu</label>
<select name="Select Menu">
    <option>Example</option>
</select>
Run Code Online (Sandbox Code Playgroud)

如果重要的话,大约有10套,9个文本框和1个选择框.

Mat*_*all 7

这不是jQuery API的工作原理.完全没有.

.before():

在匹配元素集中的每个元素之前插入由参数指定的内容.

.after():

在匹配元素集中的每个元素之后插入由参数指定的内容.


不要考虑开放标签和关闭标签.从实际元素的角度思考.

你可能正在寻找.wrapAll().

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