我正在和这个做斗争。
如何在没有任何类或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>');
});

FIDDLE
因为jQuery没有真正获得textnodes,所以本机nextSibling应该可以工作。

09-25 17:45