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
        }
    });

  • jsfiddle.net/fe8ws sollte helfen, viel Spaß! Prost!

    – Tats_innit

    9. Mai 2012 um 8:03 Uhr

Benutzer-Avatar
Tim M.

Ansatz Nr. 1

function doSomething(){
    if ($(this).hasClass('clickedTag')){
        // code here
    }
    else {
         // and here
    }
}

$('.tag1').click(doSomething);
$('.tag2').click(doSomething);

// or, simplifying further
$(".tag1, .tag2").click(doSomething);

Ansatz Nr. 2

Das wird auch funktionieren:

​$(".tag1, .tag2").click(function(){
   alert("clicked");    
});​

Geige

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 clickedTag jsbin.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.

Benutzer-Avatar
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);

Benutzer-Avatar
Thulasiram

    $('[class*="tag"]').live('click', function() {
      if ($(this).hasClass('clickedTag')){
         // code here
      } else {
         // and here
      }
   });

1294060cookie-checkMehr als eine Klasse für eine Veranstaltung zuweisen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy