Mehr als eine Klasse für eine Veranstaltung zuweisen
Lesezeit: 2 Minuten
Ich habe ein Klickereignis, das ich mehr als einer Klasse zuweisen möchte. Der Grund dafür ist, dass ich dieses Ereignis an verschiedenen Stellen in meiner Anwendung verwende und die Schaltflächen, auf die Sie klicken, an den verschiedenen Stellen unterschiedliche Stile haben.
Was ich will, ist so etwas wie $(‘.tag’ ‘.tag2’), was natürlich nicht funktioniert.
$('.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);
Ich bevorzuge eine separate Funktion (Ansatz Nr. 1), wenn die Möglichkeit besteht, dass Logik wiederverwendet wird.
Siehe auch Wie kann ich ein Element mit mehreren Klassen auswählen? für die Handhabung mehrerer Klassen auf demselben Artikel.
Im ersten Beispiel brauchen Sie nicht $('.tag2').click(doSomething); weil es offensichtlich ist, dass es eine COMMON-Klasse gibt .tag für beide/oder/mehrere Elemente, sondern nur bestimmte clickedTagjsbin.com/ukiguf/2/edit
– Roko C. Buljan
9. Mai 2012 um 7:56 Uhr
@RokoC.Buljan – das OP sagt: “Ich habe ein Klickereignis, das ich mehr als einer Klasse zuweisen möchte.” Ich zeige einen Weg, das zu tun. Es ist mir nicht klar, ob allen fraglichen Elementen eine gemeinsame Klasse zugeordnet ist oder nicht. Wenn das der Fall ist, würde der Ansatz immer noch funktionieren.
– Timo M.
9. Mai 2012 um 7:58 Uhr
Genau, die mehr als eins sind: .tag und .clickedTag 😉 Gut. +1 von mir (PS: OP braucht mehr Stimmen als wir. [you ever needed to Bounty a Question?] )
– Roko C. Buljan
9. Mai 2012 um 7:59 Uhr
Sie können mehrere Klassen gleichzeitig mit jQuery wie folgt auswählen:
$('.tag, .tag2').click(function() {
var $this = $(this);
if ($this.hasClass('tag')) {
// do stuff
} else {
// do other stuff
}
});
Wenn Sie der $()-Funktion einen zweiten Parameter geben, wird der Selektor so festgelegt $('.tag', '.tag2') schaut nach tag innerhalb von Elementen mit der Klasse tag2.
das Codeparadox
$('.tag1, .tag2').on('click', function() {
if ($(this).hasClass('clickedTag')){
// code here
} else {
// and here
}
});
oder
function dothing() {
if ($(this).hasClass('clickedTag')){
// code here
} else {
// and here
}
}
$('.tag1, .tag2').on('click', dothing);
oder
$('[class^=tag]').on('click', dothing);
Es ist so:
$('.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
}
Hast du das versucht:
function doSomething() {
if ($(this).hasClass('clickedTag')){
// code here
} else {
// and here
}
}
$('.tag1, .tag2').click(doSomething);
Thulasiram
$('[class*="tag"]').live('click', function() {
if ($(this).hasClass('clickedTag')){
// code here
} else {
// and here
}
});
12940600cookie-checkMehr als eine Klasse für eine Veranstaltung zuweisenyes
jsfiddle.net/fe8ws sollte helfen, viel Spaß! Prost!
– Tats_innit
9. Mai 2012 um 8:03 Uhr