使用jQuery在元素后面包装文本

Cla*_*nus 6 html jquery word-wrap

是)我有的:

标签内的复选框.

<label for="foo">
  <input type="checkbox" id="foo" />bar
</label>
Run Code Online (Sandbox Code Playgroud)

我需要的:

使用jQuery,我需要在span元素中包含复选框后面的文本(即"bar").

<label for="foo">
  <input type="checkbox" id="foo" /><span>bar</span>
</label>
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

$('label').wrapInner('<span></span>');
Run Code Online (Sandbox Code Playgroud)

这不会根据需要排除复选框.

Jos*_*ier 10

如果要包装文本节点,可以根据nodeType属性是否为3(这是文本节点的值)来过滤元素的内容,并包装返回的文本节点.

$('label').contents().filter(function () {
  return this.nodeType === 3;
}).wrap('<span></span>');
Run Code Online (Sandbox Code Playgroud)

或者,如果您知道文本节点将始终是input元素的下一个兄弟节点,则可以使用该nextSibling属性选择下一个兄弟节点:

$('label input').each(function () {
  $(this.nextSibling).wrap('<span></span>');
});
Run Code Online (Sandbox Code Playgroud)

  • 后一种方法确实适用于我的具体情况. (2认同)