2

我正在努力解决这个问题。

如何<div>在没有任何类或 ID 的文本周围包装新元素?

下面是场景:

<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>元素并将文本留在其下方。我也需要那里的其余文字。

4

2 回答 2

4

您需要获取下一个文本节点.ContentDiv并将其包装:

$('.ContentDiv').each(function() {
   $(this).next('a').add(this.nextSibling).wrapAll('<div class="NewDiv"></div>');
});

小提琴

由于 jQuery 并没有真正获得文本节点,因此本机nextSibling应该可以工作。

于 2013-02-15T18:03:04.373 回答
0

为此,您可以在 $('.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>");
于 2013-02-15T18:09:27.213 回答