2012-09-27 15 views
5

Tengo dos matrices. Uno es para una navegación, el otro es para paneles en la página. Las matrices son del mismo tamaño. Un botón de navegación para un panel. Este código funciona, pero estoy seguro de que debe haber una forma mejor de hacerlo sin configurar las variables temporales.¿Es esta la forma correcta de acceder a elementos de matriz en jQuery?

$('.footer-nav li').click(function() 
{ 
    var temp = $('.footer-nav li').index(this); 
    var tArray = $('.about-bgs li'); 
    $('.about-bgs li').fadeOut(); 
    $(tArray[temp]).fadeIn(); //This is the line in question! 
}); 

¿Algún tomador?

+1

Tal vez: '$ (' sobre-BGS. li '). fadeOut(). eq ($ ('. footer-nav li '). index (this)). fadeIn(); ' – Orbling

Respuesta

2

La devolución de llamada jQuery a $(selector).each(callback)accepts two parameters: index y element. Para que pueda escribir

$('.footer-nav li').each(function(index, element) { 
    element.click(function(evt) { 
    $('.about-bgs li').fadeOut(); 
    $('.about-bgs li').get(index).fadeIn(); 
    }); 
}); 

Pero esto parece un código extraño para mí, ya que existen conflictos de animación entre todos los elementos en la lista (que se desvanecimiento) y el designado (que está desapareciendo en) Creo que no funcionará como se esperaba.

ya que parece que sólo un elemento es visible a la vez, que me marchitaría a cabo sólo la que actualmente está visible (no quiere decir que usted necesita para comprobar si hay dos clics consecutivos en el mismo elemento):

var current = $('.about-bgs li').fadeOut(); 
var last = $('.about-bgs li .current'); 
if (current !== last) { 
    last.removeClass('current').fadeOut(); 
    current.addClass('current').fadeIn(); 
} 

Al momento de la carga DOM, debe designar un elemento .current y ejecutar esta función (o jugar con CSS/JS en consecuencia).

0

creo que debería haber sido capaz de utilizar sólo tArray[$(this)].fadeIn()

EDIT: Algunas otras cosas: Como ya ha escrito var tArray = $('.about-bgs li');, sólo puede utilizar tArray.fadeOut();

Cuestiones relacionadas