2012-09-25 12 views
12

Mi chiedo se posso usare $ (this) così come un selettore di classe prima di eseguire una funzione su di essi.

Quindi piuttosto che fare;

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

Fare qualcosa di più;

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

Mentre in realtà, quanto sopra selezionerà 'questo' nel contesto di '.closed'

saluti,

+0

Ignora la risposta (eliminata), domanda erronea. – SpaceBison

risposta

21

È possibile utilizzare add():

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

aggiungerà this elemento per il set di elementi corrispondenti (ad esempio .closed).

+1

Risposta eccellente, +1 :) Inoltre, se l'elemento ha id, puoi fare qualcosa di simile. (Avrei dovuto farlo prima di conoscere il tuo approccio) '$ ('#' + this.id + ', .closed'). ToggleClass ('open');' – Jashwant

+0

Avrei usato normalmente la soluzione di Jashwant, ma io trovarlo piuttosto brutto. Per quanto riguarda VisioN ... mi piace! Qualche idea su quale delle due soluzioni sia più veloce? – Joel

+1

@Joel Dovrebbero funzionare quasi alla stessa velocità. Tuttavia, [jsperf mostra] (http://jsperf.com/add-vs-multiselector) che la soluzione 'add()' è leggermente (4%) più lenta del selettore multiplo. Con tutti i mezzi, l'uso di 'add()' è l'unico modo per aggiungere 'questo' al set di elementi jQuery. – VisioN