/ / Umgang mit $ (this) bei Mehrfachauswahl - Javascript, jQuery

Umgang mit $ (this), wenn es mehrere Selektor - Javascript, jquery

Jetzt, wenn ein Effekt wie ein Animieren auf mehrere Selektoren angewendet wird

$(".foo,.bar").animate({width: "250"}, "slow",function(){
console.log($(this));
});

Das Konsolenprotokoll wird zweimal für zurückgegeben .foo und .bar

Also, wie kann ich andere Ereignisse auf dieser Grundlage machen .foo nur.

Etwas wie das $(this)+".foo" << das ist falsch

Ich muss andere Events basierend auf dem Ort von machen (diese) .foo

Antworten:

6 für die Antwort № 1

Machen Sie einen separaten Selektor für $(".foo"), oder filtern Sie den vorhandenen Selektor mit filter(".foo"). Dies ist am besten, wenn Sie Animationen / Ereignisse frühzeitig an die richtige Gruppe von Elementen binden.

Oder prüfen Sie im animierten Rückruf, ob $(this).is(".foo") oder $(this).hasClass("foo"). Dieser Ansatz ist am besten geeignet, wenn Ihre Animation / Ereignisse bereits gebunden sind, Sie jedoch herausfinden müssen, auf welche Art von DOM-Element sie ausgelöst wurden.

Im Allgemeinen ist es am besten, Dinge genau so zu binden, wie Sie es möchten (der erste Ansatz), aber es kommt darauf an, was Sie genau versuchen.

Sehen:


2 für die Antwort № 2

Benutzen .filter()

$(this).filter(".foo").dosomething()

Wenn die this ist ein .goo Element dann $(this).filter(".foo") wird nichts zurückgeben, so dass die Aktionen danach keine Auswirkungen auf die .goo Elemente