Trouver appariés classname en jQuery
J'ai une série de vignettes d'image dans une page. Ils sont créés à l'aide de sprites css.
<div class="galleryImg1"></div>
<div class="galleryImg2 featured"></div>
<div class="galleryImg3"></div>
J'ai été à l'origine à l'aide de id="galleryImg1"
mais ont changé à l'aide class="galleryImg1"
, car les images peuvent apparaître à plusieurs endroits sur la même page et je voulais éviter les id en double.
J'ai un sélecteur jQuery pour attacher des événements de clic à l'ensemble de ces classes.
$("[class^=galleryImg]").click(function() {
//how do i get 'galleryImg2' and '2' here?
}
Ce que je me demande si il existe un moyen facile de trouver le nom de classe commence par "galleryImg" qui a été cliqué. Vais-je avoir pour utiliser une expression régulière ou est-il un " plus malin?
(oui, si j'ai été en utilisant un #sélecteur d'ID, alors je pourrais juste dire que " c'.id', mais comme je le disais, je ne veux pas utiliser l'Id parce que je veux afficher plusieurs copies de la même image.)
OriginalL'auteur Simon_Weaver | 2009-02-16
Vous devez vous connecter pour publier un commentaire.
Pour autant que je sais, vous allez avoir besoin d'une jolie base de l'expression régulière, comme suit:
Si vous êtes particulièrement opposés à cela, cependant, vous pouvez utiliser quelque chose comme cela, qui n'est pas conforme, mais Le Travail sera Fait.
Depuis que je suis en supposant que vous avez le plein contrôle de votre code HTML et vous savez que galleryImg classe sera toujours suivie par l'ID je ne pense pas qu'une expression régulière ici est le mal du tout. Juste aller avec elle!
Si vous avez plusieurs classes au sein de la classe attribut d'une balise puis cela peut ne pas fonctionner comme prévu. Ce n'est pas la recherche de chaque classe, mais plutôt l'attribut de classe dans son ensemble. Les contient générique
*=
est utile dans ce scénario.OriginalL'auteur Paolo Bergantino
Ce que je fais, c'est quelque chose comme ceci:
Aussi, pour l'enregistrement, vous ne pouvez pas (valablement) démarrer un nom de classe avec un nombre.
OriginalL'auteur Marcel
Vous pouvez utiliser une Regex, mais à l'aide de split et indexof sera compris par le plus grand nombre de programmeurs. Aussi pour quelque chose de si simple, peut-être mieux éviter les Regex.
Dans le gestionnaire d'événements d'utiliser le jQuery normalisée de l'objet d'Événement:
le problème avec ceci est que il peut y avoir plusieurs classes. j'ai oublié de explicitement mentionner que, mais c'est pourquoi je l'ai mis dans un nom de classe avec 'galleryImg2 recommandés"
Je ne sais que vous avez multipl les noms de classe, je viens si vous posiez des questions sur le fait d'obtenir la classe de l'élément cliqué. J'ai également mis à jour ma réponse, Regex est plus lent que juste en utilisant le Javascript split, puis, indexOf()==0.
mais je ne peux pas garantir qu'il sera le premier élément. pour être franc, dans cet exemple particulier, je POUVAIS compter sur cela, mais je vais essayer d'être aussi générique que possible
n'est pas un ID est ajouté à la fin de la galleryImg classe, c'est juste une autre classe sur cet élément. L'attribut class permet de spécifier plusieurs, séparés par des espaces, des classes. Mon exemple n'est exactement ce qui est demandé.
OriginalL'auteur Ash
Surpris personne n'a jamais mentionné
data
attributs comme une solution.Plus détaillée et plus claire et vous pouvez mettre ce que vous voulez pour la valeur.
Avec jQuery vous pouvez obtenir la valeur avec
$(ele).data('imagename')
OriginalL'auteur Simon_Weaver