Jquery che trova l'elemento prev con la stessa classe attraverso il dom
-
11-12-2019 - |
Domanda
Un'altra domanda su JQuery Superior
Voglio trovare un elemento DOM con classe dire, ABC, quando clicco su un elemento con la stessa classe.Ora la ricerca dovrebbe essere esattamente l'elemento precedente.
Codice Ho scritto:
$(this)
.closest('.abc')
.parent()
.prevAll()
.find('.abc')
.first()
.triggerHandler("focus");
.
Questo è la ricerca del precedente DOM e alla ricerca del genitore ABC, ma se la classe 'ABC' non esiste nel precedente DOM, voglio cercare fino a quando non trova ABC, anche provato con il recintolo di JQuery ancora senza fortuna. Se qualcuno può aiutarmi, molte grazie.
Soluzione
È possibile utilizzare questo per ottenere l'elemento precedente:
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
.
- .
- jsfiddle demo
-
.index()
Non direi che questo è il codice più efficiente possibile, ma senza conoscere l'albero DOM, è il migliore che posso trovare.Se rievochi solo
$('.abc')
quando il DOM potrebbe essere cambiato e utilizzare solo la versione memorizzata nella cache ($elems
) dovrebbe essere fine.
Altri suggerimenti
Ecco un modo veloce e sporco:
$('.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");
});
.