2009-08-01 11 views
8

Yo he construido una plantilla de calendario para un sitio de Drupal usando una tabla HTML, y tengo jQuery para añadir un 'no-text' clase para cada celda vacía:¿Cómo puedo encontrar y reemplazar entidades HTML con jQuery?

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

Esto funciona bien, pero Mi problema es que el editor CMS WYSIWYG agrega automáticamente la entidad HTML   a las celdas vacías. Por lo tanto, he intentado buscar y reemplazar las entidades con un espacio 'real' de antemano, pero falla jQuery para encontrarlos:

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

Este fragmento de código funciona bien cuando se sustituye una cadena normal, pero el   parece ser algo ¡diferente!

Así que mi pregunta es esta: ¿cómo se puede utilizar jQuery para buscar y reemplazar entidades HTML?

+0

votando hacia arriba, ya que es una buena pregunta. muy bien preguntado. – elcuco

Respuesta

9

Lo más sencillo que hacer sería

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

Dónde \u00a0 es el carácter Unicode para  

+0

Gracias por todas las respuestas, amigos. Este funcionó bien, ¡salud! – james6848

1

¿Has probado .html()?

$ this.html ('');

2

tratar

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

w/o el espacio después del signo.

1

Esta es otra alternativa que funciona.

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

Si su nbsp está dentro de una etiqueta, en lugar de un archivo externo de JS, el HTML tiene que ser codificada en dos ocasiones:

  
Cuestiones relacionadas