Domanda

ho una serie di tab (principale-schede) su un sito web e ogni scheda ha un altro insieme di schede (sotto-schede). Voglio Usa i tasti freccia su una tastiera per navigare le schede, al posto del mouse.

Queste schede sono solo voci di elenco HTML <li>

Quando raggiungo l'ultima scheda secondaria con il tasto freccia, lo voglio per tornare alla scheda principale accanto in modo che possa visualizzare le proprie schede secondarie, e portare avanti la navigazione al suo interno.

La mia domanda è: come posso rilevare, in jQuery / javascript, quando ho raggiunto l'ultima voce di lista (scheda) con i tasti freccia vale a dire il tasto freccia destra?

Molte grazie

È stato utile?

Soluzione

Si potrebbe essere in grado di utilizzare il : ultima o : last-child selettori in jQuery. A seconda di come i tag <li> sono annidati, si potrebbe anche essere necessario utilizzare le bambini () funzione lungo con esso.

Per esempio, diciamo che avete il seguente markup:

    <ul id="nav">
        <li>List item</li>
        <li>List item with sub items
            <ul>
                <li>Sub list item</li>
            </ul>
        </li>
    </ul>

Ciò selezionare l'<li> all'ultimo livello superiore

$('ul#nav > li:last').css('border', '1px solid red');

alt text


Questo sarebbe selezionare l'ultima <li> attraversamento del DOM verso il basso. In questo caso è il <li> con il testo "elemento della lista Sub"

$('ul#nav li:last').css('border', '1px solid red');

alt text


Ciò selezionare qualsiasi tag <li> che sono l'ultimo figlio del genitore

$('ul#nav li:last-child').css('border', '1px solid red');

alt text

Altri suggerimenti

var maintabs = $('.maintab'),
    active_maintab_eq = 0,
    active_subtab_number = 1;

$(document).keyup( function(e){

if (e.which == 39) {
// right arrow key pressed
    if ( active_subtab_number == maintabs.eq(active_maintab_eq).find('li').length ) {
        // go to next main-tab
        // and reset active sub-tab counter
        ++active_maintab_eq;
        active_subtab_number = 1;
    } else {
        ++active_subtab_number;
    }
}

});

Qualche cosa come questa, credo.

È possibile utilizzare .length per scoprire se un selettore jQuery trovato nulla:

var nextSubTab = $(currentSubTab).next("li");
if (nextSubTab.length == 0) {
    // oops, end of this tab, switch to next tab
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top