J'ai un événement de clic que je veux affecter à plus de classe. La raison en est que j'utilise cet événement à différents endroits de mon application et que les boutons sur lesquels vous cliquez ont un style différent selon les endroits.
Ce que je veux, c'est quelque chose comme $ ('. Tag' '.tag2'), qui ne fonctionne bien sûr pas.
$('.tag').click(function (){
if ($(this).hasClass('clickedTag')){
// code here
}
else {
// and here
}
});
function doSomething(){
if ($(this).hasClass('clickedTag')){
// code here
}
else {
// and here
}
}
$('.tag1').click(doSomething);
$('.tag2').click(doSomething);
// or, simplifying further
$(".tag1, .tag2").click(doSomething);
Cela fonctionnera également:
$(".tag1, .tag2").click(function(){
alert("clicked");
});
Je préfère une fonction séparée (approche n ° 1) s'il y a une chance que la logique soit réutilisée.
Voir aussi Comment sélectionner un élément avec plusieurs classes? pour gérer plusieurs classes sur le même élément.
Vous pouvez sélectionner plusieurs classes à la fois avec jQuery comme ceci:
$('.tag, .tag2').click(function() {
var $this = $(this);
if ($this.hasClass('tag')) {
// do stuff
} else {
// do other stuff
}
});
En donnant un second paramètre à la fonction $ (), étend le sélecteur de manière à ce que $('.tag', '.tag2')
recherche tag
dans les éléments de la classe tag2
.
$('.tag1, .tag2').on('click', function() {
if ($(this).hasClass('clickedTag')){
// code here
} else {
// and here
}
});
ou
function dothing() {
if ($(this).hasClass('clickedTag')){
// code here
} else {
// and here
}
}
$('.tag1, .tag2').on('click', dothing);
ou
$('[class^=tag]').on('click', dothing);
C'est comme ça:
$('.tag.clickedTag').click(function (){
// this will catch with two classes
}
$('.tag.clickedTag.otherclass').click(function (){
// this will catch with three classes
}
$('.tag:not(.clickedTag)').click(function (){
// this will catch tag without clickedTag
}
Avez-vous essayé ceci:
function doSomething() {
if ($(this).hasClass('clickedTag')){
// code here
} else {
// and here
}
}
$('.tag1, .tag2').click(doSomething);
$('[class*="tag"]').live('click', function() {
if ($(this).hasClass('clickedTag')){
// code here
} else {
// and here
}
});