2012-11-13 3 views
0

css J'ai un certain texte comme celui-ci:Trouver un certain texte et ajouter

<li>certain text</li> 

Maintenant, je veux colorer la pièce qui dit « texte ». Avec cela, je peux trouver le texte complet:

$(function() { 
    var color = $('*:contains("text")'); 
    color.css("color", "red"); 
}); 

Le problème est que ce code transforme le texte complet en couleur rouge. Comment puis-je obtenir seulement la pièce qui dit «texte» et faire css sur cette partie?

Répondre

4

Vous devez modifier le contenu li car le navigateur ne peut appliquer que du style aux éléments, pas aux mots.

Vous pouvez le faire:

$('li:contains("text")').each(function(){ 
    var licontent = $(this).html(); 
    licontent = licontent.replace(new RegExp("text", "g"), '<span style="color:red">text</span>'); 
    $(this).html(licontent); 
}); 

Demonstration

Soyez prudent avec le sélecteur *. Vous devez comprendre cela vous aider à tous les parents du li, y compris le document ...

+0

Notez que la méthode 'replace' avec chaîne en tant que premier paramètre ne remplace que la première occurrence dans la chaîne, vous devrez donc utiliser une expression de reglar s'il peut y avoir plus d'une occurrence. – Guffa

+1

Ou utilisez l'astuce habituelle de 'string.split (" replace this "). Join (" avec ceci ")' – Archer

+0

@Guffa Vous avez raison. J'ai édité –

0

Vous pouvez le faire de cette façon, mais il n'a pas été testé:

$(function() { 
    var color = $('body').text('text'); 
    color.css("color", "red"); 
}); 
+0

http://jsbin.com/izisin/1/ trouvez ici – Jai

+0

Ça ne marche pas pour moi. Je perds les données créées dynamiquement, étant remplacé par le mot 'texte' – Youss

+0

@JaiPSah '$ ('body'). Text ('texte')' change le texte du corps en 'texte'. Voir http://api.jquery.com/text/ –

Questions connexes