Jquery encontrar el anterior elemento con la misma clase a través de dom
-
11-12-2019 - |
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.
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");
});