将所有内容包裹在 hr 元素之间
wrap everything between hr elements
试图找到一种方法将代码中的所有 hr 标记换行,但目前还没有成功。对代码有什么建议吗?
这是我现在正在做的事情(也作为 fiddle):
$('hr').each(function() {
$(this).next('hr').wrapAll('<div style="background-color:yellow"></div>');
});
Text
<hr>
Text1
Text2
<hr>
Text3
<hr>
Text4
Text5
<hr>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
jQuery 对文本节点的帮助不大(contents
除外)。这里最简单的事情可能是只使用 DOM 本身来查找以下兄弟节点(包括文本节点),然后将它们包装在 div
;查看评论:
$('hr').each(function() {
// Build an array of all nodes (including text nodes)
// up to and not including the next HR if any
var nodes = [];
var n = this.nextSibling;
while (n && n.nodeName != "HR") {
nodes.push(n);
n = n.nextSibling;
}
// Wrap them in a div
$(nodes).wrapAll('<div style="background-color:yellow"></div>');
});
Text
<hr>
Text1
Text2
<hr>
Text3
<hr>
Text4
Text5
<hr>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
试图找到一种方法将代码中的所有 hr 标记换行,但目前还没有成功。对代码有什么建议吗?
这是我现在正在做的事情(也作为 fiddle):
$('hr').each(function() {
$(this).next('hr').wrapAll('<div style="background-color:yellow"></div>');
});
Text
<hr>
Text1
Text2
<hr>
Text3
<hr>
Text4
Text5
<hr>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
jQuery 对文本节点的帮助不大(contents
除外)。这里最简单的事情可能是只使用 DOM 本身来查找以下兄弟节点(包括文本节点),然后将它们包装在 div
;查看评论:
$('hr').each(function() {
// Build an array of all nodes (including text nodes)
// up to and not including the next HR if any
var nodes = [];
var n = this.nextSibling;
while (n && n.nodeName != "HR") {
nodes.push(n);
n = n.nextSibling;
}
// Wrap them in a div
$(nodes).wrapAll('<div style="background-color:yellow"></div>');
});
Text
<hr>
Text1
Text2
<hr>
Text3
<hr>
Text4
Text5
<hr>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>