Reputation: 566
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> </p>
$("p").each(function() {
$(this).find(' ').remove();
});
Upvotes: 0
Views: 2938
Reputation: 36784
Select your paragraph elements, filter out the ones that contain only
using .filter()
, then use .remove()
:
$('p').filter(function(){
return this.innerHTML == ' ';
}).remove();
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> </p>
Upvotes: 6
Reputation: 207901
This works:
$('p').filter(function () {
return $(this).html().replace(/ /g, '').length === 0
}).remove()
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
with it.
Upvotes: 0
Reputation: 36703
$(p).each(function(){
$(this).html($(this).html().replace(" ", ""));
$(this).replaceTagName('');
// or $(this).contents().unwrap(); much faster
});
Upvotes: 1