Question

Dire que j'ai 2 divs:

<div>&pound; 21.99</div>
<div>&pound;</div>

Si je veux seulement sélectionner le div qui contient le symbole £ seulement, comment pourrais-je aller à ce sujet?

J'ai essayé:

if ($('div:contains("&pound;")').length > 0) 
{
   $(this).addClass("pound");
}
Était-ce utile?

La solution

Je crois que le problème est que le navigateur transforme les caractères d'échappement HTML, de sorte que vous devez rechercher le caractère réel ... Je l'ai testé cela et il fonctionne

$(document).ready(function(){
 $('div').each(function(){
  if ($(this).html() == "£"){
   $(this).addClass("pound");
  }
 })
})

Autres conseils

$('div:contains("&pound;")').each( function() {
     var text = $(this).html();
     if (text && text.match(/\s*&pound;\s*/)) {
        $(this).addClass('pound');
     }
});

Essayez .filter.

J'ai trouvé une autre question sur le SO avec des informations pertinentes:

validation du champ d'expression régulière dans jQuery

Le code de tvanfosson permet des espaces de chaque côté du signe £, mais l'expression régulière pourrait faire avec un peu de modification:

$('div:contains("&pound;")').each( function() {
    var text = $(this).html();
    if (text && text.match(/^\s*&pound;\s*$/)) {
        $(this).addClass('pound');
        }
    });

notez le « ^ » et « $ » indiquant le début et la fin de la chaîne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top