2

我在 contenteditable div 中有一些不需要的标签,需要删除它们。

那些是 span

尝试使用 jqueryunwrap函数,但结果是undefined因为它删除了父标签而不是标签本身。

有什么帮助吗?在下面的示例中,预期的控制台是:

lorem ipsum lorem ipsum lorem ipsum

$('button').on('click', function(){
  $('span').unwrap();
  console.log($('#story').html());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class='story' id='story'>
loem ipsum &nbsp;<span style="font-size: 1.3em;">lorem ipsum</span> lorem ipsum
</div>
<br>
<button>CLICK</button>

4

3 回答 3

1

你必须使用喜欢

$("#story").find("span").contents().unwrap();

$('button').on('click', function(){
  $("#story").find("span").contents().unwrap();
  console.log($('#story').html().replace(/&nbsp;/g, ''));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class='story' id='story'>
loem ipsum &nbsp;<span style="font-size: 1.3em;">lorem ipsum</span> lorem ipsum
</div>
<br>
<button>CLICK</button>

于 2019-04-04T06:07:22.057 回答
1

您可以更改outerHTMLinnerHTMLfor<span>并使用 replace 删除&nbsp;

$('button').on('click', function(){
  $('span').each(function(){
    this.outerHTML = this.innerHTML;
  })
  let html = $('#story').html();
  $('#story').html(html.replace(/&nbsp;/g,""))
  console.log($('#story').html());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class='story' id='story'>
loem ipsum &nbsp;<span style="font-size: 1.3em;">lorem ipsum</span> lorem ipsum
</div>
<br>
<button>CLICK</button>

于 2019-04-04T06:08:04.093 回答
1

您需要解开文本节点,因此使用contents()方法获取所有子节点。并且替换&nbsp;using String#replacemethod where html()method with a callback(回调中的第二个参数是旧的HTML内容)可用于更新内容。

$('button').on('click', function() {

  // get span tags child nodes and unwrap
  $('#story span').contents().unwrap();

  // remove &nbsp; from html content
  $('#story').html((_, html) => html.replace(/&nbsp;/g, ''))

  console.log($('#story').html());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class='story' id='story'>
  loem ipsum &nbsp;<span style="font-size: 1.3em;">lorem ipsum</span> lorem ipsum
</div>
<br>
<button>CLICK</button>

于 2019-04-04T06:09:40.980 回答