tags:

views:

1789

answers:

5

I've constructed a calendar template for a Drupal site using an HTML table, and I've got jQuery to add a class 'no-text' to each empty cell:

$('table.calendar td:empty').addClass('no-text');

This works well, but my problem is that the CMS WYSIWYG editor automatically adds the HTML entity   to empty cells. I've therefore attempted to find and replace the entities with a 'real' space beforehand, but jQuery fails to find them:

$('table.calendar td').each(function() {
   var $this = $(this);
   var t = $this.text();
   $this.text(t.replace('[entity here]',''));
});

This snippet works fine when replacing a normal string, but the   seems to be something different!

So my question is this: how can jQuery be used to search and replace HTML entities?

+1  A: 

Have you tried .html() ?

$this.html('');

+1  A: 

try

replace(/& nbsp;/g, '');

w/o the space after the ampersand.

Zed
+4  A: 

The simplest thing to do would be

$this.text(t.replace('\u00a0',''));

Where \u00a0 is the unicode character for  

jitter
Thanks for all the answers, folks. This one worked just fine - cheers!
james6848
+1  A: 

This is another alternative that works.

var nbsp = unescape("%a0");     // a0 is hex code point for  
$this.text(t.replace(nbsp,''));
Anwar Chandra
+1  A: 

If your nbsp is within a tag, rather than an external js file, the html needs to be encoded twice:

 
Evert