2012-09-25 5 views
12

Ich frage mich, ob ich sowohl $ (this) als auch einen Klassenselektor benutzen kann, bevor ich eine Funktion auf ihnen ausführe.

Also lieber als zu tun;

$(this).toggleClass('open'); 
$('.closed').toggleClass('open'); 

Tun Sie etwas mehr wie;

$(this, '.closed').toggleClass('open'); 

Während wirklich wählen Sie die oben wird 'dies' im Rahmen der '.closed'

Grüße,

+0

Ignorieren Sie meine (gelöschte) Antwort, falsch gelesene Frage. – SpaceBison

Antwort

21

Sie add() verwenden können:

$(".closed").add(this).toggleClass("open"); 

Es wird hinzufügen this Element zu der Menge der übereinstimmenden Elemente (dh .closed).

+1

Ausgezeichnete Antwort, +1 :) Auch wenn Element ID hat, können Sie so etwas tun. (Ich hätte das getan, bevor ich Ihren Ansatz kannte) '$ ('#' + this.id + ', .closed'). ToggleClass ('open');' – Jashwant

+0

Normalerweise hätte ich Jashwants Lösung benutzt, aber ich finde es ziemlich hässlich. Wie für VisioN .. Ich mag das! Jede Idee, welche dieser beiden Lösungen ist schneller? – Joel

+1

@Joel Sie sollten fast die gleiche Geschwindigkeit laufen. Allerdings zeigt [jsperf] (http://jsperf.com/add-vs-multiselector), dass 'add()' Lösung etwas (4%) langsamer als multiple Selektor ist. Die Verwendung von 'add()' ist die einzige Möglichkeit, 'this' zur Menge der jQuery-Elemente hinzuzufügen. – VisioN

Verwandte Themen