2009-10-08 4 views

Répondre

4

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 testé et il fonctionne le code de

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

Ce genre de sens a du sens .. '£' est une séquence d'échappement HTML, pas une Javascript .. Il semble logique que Javascript verrait le symbole de la livre réelle, même si cela aurait du sens dans tous les cas je suppose .. – dbr

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

Merci pour la réponse et le code, mais pas de joie j'ai peur :( –

+1

Vous devrez peut-être ajuster l'expression régulière.Il est possible que vous deviez rechercher la valeur unicode associée au signe dièse. le code à travers le débogueur firefox/firebug et en regardant les valeurs de l'innerHTML de chacun des divs.Supprimer le contains() s'il ne semble pas sélectionner les divs que vous voulez afin que vous puissiez avoir une meilleure idée de ce que javascript – tvanfosson

0

tvanfosson permet des espaces de chaque côté du signe £, mais l'expression régulière a d o avec un peu de modification:

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

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