我正在努力解决这个问题。
如何在没有任何类或ID的文本周围包装新的<div>
元素?
以下是场景:
<div class="ContentDiv">.....</div>
Share your knowledge. <a href="URL">Be the first to write a review »</a>
我需要新的div
环绕“Share your knowledge. <a href="URL">Be the first to write a review »</a>
”
我尝试过以下方法:
$(document).ready(function() {
$('.ContentDiv').each(function() {
$(this).add($(this).next()).wrapAll('<div class="NewDiv"></div>');
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="ContentDiv">.....</div>
Share your knowledge. <a href="URL">Be the first to write a review »</a>
但它不起作用,因为它只包裹<a>
元素并留下它下面的文本。我也需要其他文本。
你需要在.ContentDiv
之后得到下一个textnode并包装:
$('.ContentDiv').each(function() {
$(this).next('a').add(this.nextSibling).wrapAll('<div class="NewDiv"></div>');
});
由于jQuery确实没有获得文本节点,因此本机nextSibling
应该可以工作。
为此,您可以在$('。ContentDiv')之后添加一个div,然后将html添加到它。
$("<div id='new_div'></div").insertAfter($('.ContentDiv')).html("Share your knowledge. <a href='URL'>Be the first to write a review »</a>");