2011-12-15 11 views
13

Para mi proyecto estoy usando selectores en caché para acelerar, y ver mejoras: (para reducir las búsquedas dentro del documento)jQuery, cómo utilizar múltiples elementos en caché

var sel1 = $('#selector1'); 
var sel2 = $('#selector2'); 

cómo puedo usar selectores en caché ¿en esta situación? por ejemplo:

$('#selector1, #selector2').fadeTo(300, 1, 'linear'); 

Es sólo para pulir mi código

Ty :)

+0

Ver http://stackoverflow.com/q/1881716/901048 para un posible enfoque. – Blazemonger

Respuesta

16

Puede utilizar .add() a "Añadir elementos al conjunto de elementos coincidentes":

sel1.add(sel2).fadeTo(300, 1, 'linear'); 

Docs para .add(): http://api.jquery.com/add

.add() puede tomar en:

  • un selector
  • elementos DOM
  • jQuery objetos
  • y selectores con contexto ($('<selector>', <context>))

También puede pasar una matriz de elementos DOM a jQuery :

var one = $('#one')[0], 
    two = $('#two')[0]; 

$([one, two]).fadeTo(300, 1, 'linear'); 

Aquí está una demostración: http://jsfiddle.net/3xJzE/

ACTUALIZACIÓN

creé una jsperf de los tres métodos diferentes que se responde actualmente: http://jsperf.com/jquery-fadeto-once-vs-twice (parece que el uso de un selector de gama es el más rápido: $([one, two]).fadeTo...)

1

Si ya tiene almacenados los selectores simplemente aplicar el fadeTo a cada uno de ellos individualmente. JQuery sólo tendrá que analizar el selector de modos ...

sel1.fadeTo(300, 1, 'linear'); 
sel2.fadeTo(300, 1, 'linear'); 
+0

fadeTo X2 vs fadeToX1 => en el rendimiento? –

+0

@ user690214: No puedo imaginar un fade. Llamar a múltiples elementos va a ser mejor.Todavía tiene que hacer el fundido dos veces, una para cada elemento, en algún punto de la línea – musefan

+1

@ user690214 Aquí hay un jsperf para mostrar la diferencia de rendimiento entre usar un 'fadeTo' y usar dos de ellos. También se prueba usando una matriz de elementos DOM como selector: http://jsperf.com/jquery-fadeto-once-vs-twice (parece que el selector de matriz es el más rápido: '$ ([sel1 [0], sel2 [0]]). FadeTo ... ') – Jasper

6

Usted puede utilizar .add() método para eso;

sel1.add(sel2).fadeTo(300, 1, 'linear'); 

Será bueno si se agrega $ prefijo al nombrar las variables. De esta forma puede distinguirlos de los objetos standart javascript. Así que esto es mejor:

var $sel1 = $('#selector1'); 
var $sel2 = $('#selector2'); 

$sel1.add($sel2).fadeTo(300, 1, 'linear'); 
7

de jQuery add

sel1.add(sel2).fadeTo(300, 1, 'linear'); 
Cuestiones relacionadas