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