我有这个标签序列和div
s,我需要包围每组1个标签+ 1 div另一个div。我知道我必须使用.each和.wrap
或.prepend
我需要帮助。我怎么能这样做?
HTML:
<label>label</label>
<div>text</div>
<label>label</label>
<div>text</div>
Here I have set a jsFiddle demo.
结果应该是这样的:
<div class="1">
<label>label</label>
<div>text</div>
</div>
<div class="1">
<label>label</label>
<div>text</div>
</div>
答案 0 :(得分:2)
或者,使用.wrapAll()
。
$("label").each(function(){
var $this = $(this);
$this.add($this.next()).wrapAll("<div class='1'/>");
});
答案 1 :(得分:2)
假设这个标记总是这样:
$("label").each(function () {
$(this).next("div").andSelf().wrapAll("<div>");
});
您可以不使用"div"
.next
,但可以防止其他元素妨碍使用。
答案 2 :(得分:1)
你可以通过迭代标签并包装/附加每个标签来实现:
$('label').each(function() {
$(this).wrap('<div class="l"/>').parent().next().appendTo($(this).parent());
});
答案 3 :(得分:1)
这可能不是最有效的方式,但经过多次不同的尝试,这就是我想出的:
$('label').each(function() {
var next = $(this).nextAll('div')[0];
$(this).wrap('<div class="new" />').append(next);
});
我试过的其他所有内容都会选择标签和div分别迭代它们,所以它不会在同一个div下配对。将div
保存到变量的额外工作是因为nextAll()
对同一父级的兄弟节点进行操作 - 可能label
将成为新div
的子节点在评估nextAll()
之前,否则。