jquery trouve du texte à l’intérieur de

Je joue avec des sélecteurs et je frappe un mur en sélectionnant Texte dans une cellule.

Voici une tentative simple que je fais.

First Name *required

Je veux changer la classe pour que cette cellule soit “rouge” – si la chaîne “* obligatoire” est trouvée.

Voici ma tentative au jQuery:

 $("td:contains('*required')").addClass("red"); 

Il semble que toutes les cellules appliquent cette classe. De meilleures façons de rechercher un texte spécifique?

Ce que vous avez fonctionne, vous pouvez le tester ici , gardez à l’esprit que tout parent

contient également ce texte, cependant, pour faire une correspondance exacte, procédez comme suit:

 $("td").filter(function() { return $.text([this]) == '*required'; }) .addClass("red"); 

Vous pouvez le tester ici .

Vous pouvez toujours simplement utiliser $.filter() , où seuls les éléments pour lesquels le rappel renvoie true sont inclus dans la sélection. Par exemple:

 $('td').filter(function(i) { $(this).html().indexOf('*required') >= 0; }); 

Aussi: vous voudrez être plus précis avec votre sélecteur – pour plus d’efficacité, et aussi à cause de la réponse de Nick. Cependant, si vous envisagez l’efficacité, vous feriez mieux de ne pas utiliser une méthode qui utilise un rappel en premier lieu. 🙂

En ce qui concerne les sélecteurs, utilisez $('#tableID > tr > td')... ou quelque chose de similaire.

Vous ne devriez pas utiliser JavaScript pour faire cela. Ce que vous devriez utiliser est une classe CSS:

 
First Name *required