2013-04-11 20 views
9

Chcę usunąć wszystkie li z mojej nieuporządkowanej listy, ale chcę, aby przed li ktoś pomysł, jak to zrobić?Usuń pozycję z listy

Mam teraz

$('.pagination ul li:not(:last)').remove(); 

ale który usuwa wszystko oprócz ostatniego, więc to nie jest poprawna

+0

Polecam korzystanie z rozwiązania przez Kevina Bowersoxa. Jego rozwiązanie może nie być najkrótsze, ale jest tu najskuteczniejszym rozwiązaniem. Kod Bojanglesa jest ładny i czysty, ale także najwolniejsza tutaj metoda. Zapraszam do obejrzenia wyników testu: http://jsperf.com/jquery-list-filter – Chris

Odpowiedz

9

Zastosowanie :eq() z ujemnym wskaźnikiem - będzie liczyć od końca kolekcji zamiast na początku.

W twoim przypadku, będziemy chcieli użyć indeksu -2 (-1 będzie ostatnim <li>), tak jak poniżej:

$('.pagination ul li:not(:eq(-2))').remove(); 

Here's a quick demonstration.

+0

jeśli to zrobię, otrzymam błąd składni? – user1994529

+0

Z której wersji jQuery korzystasz? Przykład, który dałem [działa dobrze dla mnie] (http://jsfiddle.net/mj79g/) z jQuery 1.9.1 – Bojangles

+2

@ user1994529: W jakiś sposób robisz coś nie tak. Kod jest poprawny pod względem składniowym. –

2

JavaScript

var $items = $('.pagination ul li'); 

$items.not($items.eq($items.length-2)).remove(); 

HTML

<div class="pagination"> 
    <ul> 
     <li>Page 1</li> 
     <li>Page 2</li> 
     <li>Page 3</li> 
     <li>Page 4</li> 
     <li>Page 5</li> 
    </ul> 
</div> 

Przykład roboczyhttp://jsfiddle.net/B8NPV/

2

Cóż można użyć nth-last-of-type aby pobrać jeden przed ostatnim. Przydzielony jsfiddle http://jsfiddle.net/zjLph/

HTML

<div class="pagination"> 
    <ul> 
     <li>1</li> 
     <li>2</li> 
     <li>3</li> 
     <li>4</li> 
     <li>5</li> 
    </ul> 
</div> 

JS

$('.pagination ul li').filter(':not(:nth-last-of-type(2))').remove(); 
4

Dla kompletności w tej odpowiedzi, oto kolejny (zapewne bardziej czytelny) metoda:

$('.pagination ul li:last-child').prev().siblings().remove(); 

Możesz to zobaczyć tutaj: http://jsfiddle.net/bBxDL/1

+0

-1 "Chcę usunąć wszystkie li z mojej nieuporządkowanej listy, ale chcę zachować li przed ostatnim li'. To robi odwrotnie. – Curt

+0

Och, to moje przeprosiny, przeczytałem błędne pytanie. –

+1

@Curt został poprawiony. Jest to w rzeczywistości nieco bezpieczniejsze niż najlepsza głosowana odpowiedź w ogólnym przypadku, ponieważ zawsze wybiera element listy, który jest drugim ostatnim dzieckiem i usuwa wszystko inne. –

Powiązane problemy