Domanda

Ho problemi a usare prev () in jQuery dove non è selezionando l'elemento giusto.

La mia struttura HTML è la seguente:

<section id="about">
    ...
</section>
<hr>
<section id="contact">
    ...
</section>

La sezione "attiva" è #Contact. Voglio selezionare la sezione precedente che salta il <hr>

active = active.prev('section') Non sembra funzionare. Penso che potrei leggere i documenti sbagliati ...

Se tiro fuori il <hr> Tutto funziona magnificamente. Qualsiasi idea su come saltare il <hr> su prev ()?

Tia

È stato utile?

Soluzione

Penso che potrei leggere i documenti sbagliati ...

Il Documenti API per .prev() Dai questa descrizione:

Descrizione: Ottieni il fratello immediatamente precedente di ciascun elemento nel set di elementi abbinati, facoltativamente filtrato da un selettore.

Quindi, il problema è che il hr c'è e viene perquisito da .prev(), quindi testato contro il 'section' selettore.


Qualsiasi idea su come saltare il <hr> su prev ()?

Potresti chiamare .prev() Una volta per saltare su quello hr Quindi chiamalo di nuovo per la sezione:

active = active.prev().prev('section');

O usare .prevAll() e trova quello più vicino (nel caso in cui ci siano altre sezioni che si verificano prima di esso):

active = active.prevAll('section').first();

Altri suggerimenti

Usa invece Prevall ()

active = active.prevAll('section')

Dalla documentazione jQuery:

prev () => "Ottieni il fratello immediatamente precedente" Quindi otterrà solo il primo elemento, ecco perché quando rimuovi il <hr>, Funzionerà.

Oppure prova:

<section id="about">
    ...
<hr>
</section>
<section id="contact">
    ...
</section>

Basta fare

active = active.prevAll('section').eq(0);

Sembra che .prev () e .next () selezionano solo il fratello più vicino, non importa se si fornisce un selettore specifico ad esso. Se quel selettore non corrisponde al fratello, .next ('sezione'). La lunghezza sarà 0. Pertanto utilizzando il metodo sopra, si ottiene tutti i fratelli precedenti corrispondenti al selettore e con .eq (0) si seleziona quello più vicino .

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