2009-08-01 3 views
8

Ich habe einen Kalender Vorlage für eine Drupal-Website mit einer HTML-Tabelle aufgebaut, und ich habe jQuery habe eine Klasse ‚no-text‘ an jede leere Zelle hinzuzufügen:Wie finde ich und ersetze HTML-Entitäten mit jQuery?

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

Das funktioniert gut, aber Mein Problem ist, dass der CMS WYSIWYG-Editor automatisch die HTML-Entität   zu leeren Zellen hinzufügt. Ich habe daher versucht, zu finden und die Organisationen, die mit einem ‚echten‘ Raum ersetzen vorher, aber jQuery nicht, sie zu finden:

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

Dieser Code-Schnipsel funktioniert gut, wenn eine normale Zeichenfolge zu ersetzen, aber die   scheint etwas zu sein, anders!

Meine Frage ist also: Wie kann jQuery verwendet werden, um HTML-Entitäten zu suchen und zu ersetzen?

+0

Abstimmung auf, da es eine gute Frage. nett gefragt. – elcuco

Antwort

9

Die einfachste Sache wäre

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

Wo \u00a0 ist das Unicode-Zeichen für  

+0

Danke für alle Antworten, Leute. Dieser hat gut funktioniert - Prost! – james6848

1

Haben Sie versucht .html()?

$ this.html ('');

2

versuchen

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

w/o den Raum nach dem Ampersand.

1

Dies ist eine weitere Alternative zu tun, das funktioniert.

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

Wenn Ihr nbsp innerhalb eines Tags, anstatt eine externe JS-Datei, muss der html zweimal codiert werden:

  
Verwandte Themen