Pregunta

Una pregunta más en la superior jQuery

Quiero encontrar un elemento de dom con la clase de decir,abc, cuando hago clic en un elemento con la misma clase.Ahora, la búsqueda debe ser exactamente el elemento anterior.

El código que he escrito:

$(this)
    .closest('.abc')
    .parent()
    .prevAll()
    .find('.abc')
    .first()
    .triggerHandler("focus");

Esto es buscar la espalda de los padres anteriores dom y la búsqueda de la abc, pero si la clase 'abc' no existe en el anterior dom, quiero buscar hasta que encuentre abc, También lo intentó con prevuntil de jquery aún sin suerte.

Si alguien me puede ayudar, muchas gracias.

¿Fue útil?

Solución

Usted puede utilizar esto para obtener el elemento anterior:

var $current = $(this); //the element you have
var $elems = $('.abc'); //the collection of elements

var $previous = $elems.eq($elems.index($current) - 1); //the one you needed

Yo no diría que este es el código más eficiente posible, pero sin conocer el árbol DOM, que es lo mejor que puede venir para arriba con.Si sólo vuelva a ejecutar $('.abc') cuando el DOM podría haber cambiado y sólo uso la versión en caché ($elems) que debería estar bien.

Otros consejos

aquí es una forma rápida y sucia:

$('.abc').click(function(){
    var clicked = this;
    var last;
    // Go though all elements with class 'abc'
    $('.abc').each(function(){
        if(this == clicked) return false;
        last = this;
    });
    if(last) $(last).triggerHandler("focus");
});

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top