web-dev-qa-db-fra.com

jquery find élément par classe spécifique lorsque l'élément a plusieurs classes

Je travaille donc sur quelque chose qui n'a pas été bien pensé dans la construction de l'équipe backend. Cela me laisse avec un document plein de divs.

Ce que je fais, c'est reculer à partir de l'élément sur lequel je dois cliquer, obtenir le conteneur parent puis trouver un élément dans le parent qui a class="alert-box warn", class="alert-box dead", etc ... Essentiellement, j'essaie d'utiliser plusieurs sélecteurs de classe sur chaque élément. Quand j'essaye de trouver juste alert-box il ne semble pas fonctionner correctement. Je suppose parce qu'il a warn,dead, `` bien, etc ...

Comment puis-je trouver juste alert-box* ou équivalent à un concept générique?

27
chris

Vous pouvez combiner des sélecteurs comme celui-ci

$(".alert-box.warn, .alert-box.dead");

Ou si vous voulez un caractère générique, utilisez le sélecteur contenant l'attribut

$("[class*='alert-box']");

Remarque: De préférence, vous connaissez le type d'élément ou la balise lorsque vous utilisez les sélecteurs ci-dessus. Connaître la balise peut rendre le sélecteur plus efficace.

$("div.alert-box.warn, div.alert-box.dead");
$("div[class*='alert-box']");
58
John Hartsock

Vous pouvez sélectionner des éléments avec plusieurs classes comme ceci:

$("element.firstClass.anotherClass");

Enchaînez simplement la classe suivante sur la première, sans un espace (les espaces signifient "enfants de").

8
Bojangles
var divs = $("div[class*='alert-box']");
5
Igor Dymov

Un élément peut avoir n'importe quel nombre de classNames, cependant, il ne peut avoir qu'un seul attribut de classe; seule la première sera lue par jQuery.

En utilisant le code que vous avez publié, $(".alert-box.warn") fonctionnera mais $(".alert-box.dead") ne fonctionnera pas.

3
Kevin B