2012-09-25 30 views
12

? Me pregunto si puedo usar $ (this) así como también un selector de clases antes de ejecutar una función en ellos.

Así que en lugar de hacerlo;

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

Haga algo más como;

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

Mientras que en realidad, lo anterior se seleccione 'esto' en el contexto de '.closed'

Saludos,

+0

Ignorar mi respuesta (eliminada), leer mal la pregunta. – SpaceBison

Respuesta

21

Usted puede utilizar add():

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

Se añadirá this elemento para el conjunto de elementos coincidentes (es decir, .closed).

+1

Excelente respuesta, +1 :) Además, si el elemento tiene identificación, puede hacer algo como esto. (Habría hecho esto antes de conocer su enfoque) '$ ('#' + this.id + ', .closed'). ToggleClass ('open');' – Jashwant

+0

Habría usado la solución de Jashwant normalmente, pero lo encuentro bastante feo En cuanto a VisioN's ... ¡me gusta eso! ¿Alguna idea de cuál de esas dos soluciones es más rápida? – Joel

+1

@Joel Deben correr casi a la misma velocidad. Sin embargo, [jsperf muestra] (http://jsperf.com/add-vs-multiselector) que la solución 'add()' es un poco (4%) más lenta que el selector múltiple. Por supuesto, usar 'add()' es la única forma de cómo agregar 'this' al conjunto de elementos de jQuery. – VisioN

Cuestiones relacionadas