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.

È stato utile?

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");
});
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top