2009-08-01 11 views
8

J'ai construit un modèle de calendrier pour un site Drupal en utilisant une table HTML, et j'ai jQuery pour ajouter une classe « sans texte » à chaque cellule vide:Comment rechercher et remplacer des entités HTML avec jQuery?

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

Cela fonctionne bien, mais mon problème est que l'éditeur CMS WYSIWYG ajoute automatiquement l'entité HTML   aux cellules vides. Je suis donc tenté de trouver et remplacer les entités avec un espace préalablement « réel », mais jQuery ne les trouver:

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

Cet extrait fonctionne très bien pour remplacer une chaîne normale, mais le   semble être quelque chose différent! Donc, ma question est la suivante: comment jQuery peut-il être utilisé pour rechercher et remplacer des entités HTML?

+0

vote up, car il est une bonne question. joliment demandé. – elcuco

Répondre

9

La chose la plus simple à faire serait

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

\u00a0 est le caractère unicode pour  

+0

Merci pour toutes les réponses, les gens. Celui-ci a très bien fonctionné - Bravo! – james6848

1

Avez-vous essayé .html()?

$ this.html ('');

2

essayer

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

w/o l'espace après l'esperluette.

1

C'est une autre alternative qui fonctionne.

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

Si votre nbsp est dans une balise, au lieu d'un fichier js externe, le code HTML doit être codé deux fois:

  
Questions connexes