通过 JavaScript 或 jQuery 删除其中包含不间断 space 的 P 标签

Remove P tag with non-breaking space inside of it via JavaScript or jQuery

所以我从我们的内容发布者正在使用的 API 收到了不干净的内容,我得到了 P 标签,里面有不间断的 spaces,我想删除不-破坏 space 和它所在的 P。如果他们在将内容发布到 API 之前清理他们的内容会很好,但我只需要一种快速的方法来通过 [=19 删除它=] 或 jQuery。使用下面的代码时出现此错误。 "Syntax error, unrecognized expression:  "感谢您的帮助。

<p>&nbsp;</p>

$("p").each(function() {
    $(this).find('&nbsp;').remove();
});

Select 您的段落元素,使用 .filter() 过滤掉仅包含 &nbsp; 的元素,然后使用 .remove():

$('p').filter(function(){
   return this.innerHTML == '&nbsp;';
}).remove();

JSFiddle

或者:

$('p').filter(function(){
   return !$.trim($(this).text());
}).remove();

其中,因为 .text() 为您处理 HTML 解码并且 $.trim() 删除外部空格,将删除仅包含空格的任何段落 I.E

<p>&nbsp; &nbsp;&nbsp;</p>
$(p).each(function(){
 $(this).html($(this).html().replace("&nbsp;", ""));
 $(this).replaceTagName(''); 
 // or $(this).contents().unwrap(); much faster
});

这个有效:

$('p').filter(function () {
    return $(this).html().replace(/&nbsp;/g, '').length === 0
}).remove()

jsFiddle example

虽然你说 "I want to remove the non-breaking space and the P it is in",但你只需要删除 P,因为那样会带走 &nbsp;