admin管理员组

文章数量:1431488

So I am receiving unclean content from an API that our content publishers are using and I am getting P tags with non-breaking spaces inside of them and I want to remove the non-breaking space and the P it is in. It would be nice if they cleaned up their content before they published it to the API, but I just need a quick way to remove this via JavaScript or jQuery. I get this error when using the code below. "Syntax error, unrecognized expression:  " Thanks for any help.

<p>&nbsp;</p>

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

So I am receiving unclean content from an API that our content publishers are using and I am getting P tags with non-breaking spaces inside of them and I want to remove the non-breaking space and the P it is in. It would be nice if they cleaned up their content before they published it to the API, but I just need a quick way to remove this via JavaScript or jQuery. I get this error when using the code below. "Syntax error, unrecognized expression:  " Thanks for any help.

<p>&nbsp;</p>

$("p").each(function() {
    $(this).find('&nbsp;').remove();
});
Share Improve this question asked Feb 12, 2015 at 22:18 JustinJustin 5863 gold badges10 silver badges31 bronze badges 1
  • related: stackoverflow./questions/6813227/… – Scott Simpson Commented Feb 12, 2015 at 22:23
Add a ment  | 

3 Answers 3

Reset to default 6

Select your paragraph elements, filter out the ones that contain only &nbsp; using .filter(), then use .remove():

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

JSFiddle

Or:

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

Which, because .text() handles HTML decoding for you and $.trim() removes outer whitespace, will remove any paragraph that contains only spaces I.E

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

This works:

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

jsFiddle example

While you said "I want to remove the non-breaking space and the P it is in", you only need to remove the P since that will take the &nbsp; with it.

本文标签: Remove P tag with nonbreaking space inside of it via JavaScript or jQueryStack Overflow