2013-01-09 12 views
6

Ecco an example of what I have alreadyVisualizzare solo gli elementi della lista più vicini

Le opere principali funzionalità, ma ora ho bisogno di fare l'elenco di controllo più piccoli, in modo che si adatti meglio allo schermo, come è fisso posto.

Quindi, penso che dovrebbe mostrare le prossime tre voci di elenco da articolo attivo e 2 precedenti.

Qualcosa di simile potrebbe funzionare, ma penso che ci dovrebbe essere il modo più breve e più comoda:

//Display closest items 
$('#historyController li.active').prevAll('li:not(.first)').hide().slice(0,2).show(); 
$('#historyController li.active').nextAll('li:not(.last)').hide().slice(0,3).show(); 

Eventuali suggerimenti per il re-factoring codice corrente per ottenere prestazioni migliori sarebbe utile pure.

+2

'Qualcosa di simile avrebbe funzionato, ma penso che ci dovrebbe essere più breve e più conveniente "o" qualsiasi suggerimento per rielaborare il codice corrente per prestazioni migliori sarebbe utile anche "Se nulla è rotto e il tuo codice funziona ma stai semplicemente cercando un'alternativa o meglio oach, questa domanda potrebbe essere meglio su [Stackexchange - Code Review] (http://codereview.stackexchange.com) – Nope

+0

Non sono sicuro se capisco del tutto, ma il metodo "più vicino" ti aiuta qui: http: // api .jquery.com/closest/ – Paddy

risposta

0
<ul> 
    <li>list item 1</li> 
    <li>list item 2</li> 
    <li class="third-item">list item 3</li> 
    <li>list item 4</li> 
    <li>list item 5</li> 
</ul> 

$('li.third-item').next().css('background-color', 'red'); 

link per la documentazione next()

Questo tutti gli elementi che è possibile utilizzare per tree-traversal

0

utilizzare la seguente funzione jQuery.

<ul id="one" class="level-1"> 
<li class="item-i">I</li> 
<li id="ii" class="item-ii">II 
<ul class="level-2"> 
<li class="item-a">A</li> 
<li class="item-b">B 
<ul class="level-3"> 
<li class="item-1">1</li> 
<li class="item-2">2</li> 
<li class="item-3">3</li> 
</ul> 
</li> 
<li class="item-c">C</li> 
</ul> 
</li> 
<li class="item-iii">III</li> 
</ul> 

funzione di jQuery è ..

$('li.item-a').closest('ul').css('background-color', 'red'); 
+0

Questo non sembra essere quello che Algeron sta cercando. Si prega di leggere attentamente le domande prima di inviare risposte. – Ren

0

Si potrebbe provare a utilizzare .end(), al fine di risparmiare sui traslazione:

$('#historyController li.active').prevAll('li:not(.first)').hide().slice(0,2).show().end().end().nextAll('li:not(.last)').hide().slice(0,3).show(); 
Problemi correlati