2010-03-15 19 views
26

Zasadniczo buduję prostą listę i wybrana jest jedna z pozycji na liście. Osiągam to przez zastosowanie "wybranej" klasy do dowolnego elementu, który chcę wybrać. Mam dwa przyciski, które przechodzą do przodu i do tyłu, które przechodzą przez tę listę. Jednak, gdy użytkownik dojdzie do pierwszego lub ostatniego elementu na liście, chcę zrobić post z powrotem. Tutaj utknąłem, ponieważ mam problem z rozpoznaniem, że aktualnie wybrany przedmiot nie jest pierwszym ani ostatnim.Jak sprawdzić równość DOM z jQuery?

Prosty przykład:

<div id="list"> 
    <p>item 1</p> 
    <p>item 2</p> 
    <p class="selected">item 3</p> 
</div> 

Załóżmy, że użytkownik naciśnie przycisk Dalej, w tym momencie mam sprawdzanie czegoś podobnego do tego:

if (jQuery('#list p.selected') == jQuery('#list p:last-child')) 
    //do post back 

Jednak logika ta powraca fałszywa , co prowadzi mnie do przekonania, że ​​podchodzę do tego w niewłaściwy sposób.

Jaki jest najlepszy sposób sprawdzenia tego rodzaju logiki za pomocą jQuery?

+0

Spróbuj, wyszukując swoje pytanie: http://stackoverflow.com/questions/2436966/how-would-you-compare-jquery -objects – PetersenDidIt

+0

Zrobiłem, i nie jestem zainteresowany porównywaniem obiektów jQuery w szczególności. Chcę sprawdzić równość DOM za pomocą jQuery. Być może jest to jeden w tym samym, ale zakładałem, że obiekty jQuery są tworzone, gdy wyszukujesz DOM i traktowane są osobno. – Joseph

+0

Obiekty jQuery są tylko tablicami obiektów DOM i mogą wykonywać na nich więcej akcji. – PetersenDidIt

Odpowiedz

37

Chociaż można porównać obiekty jquery jak Matt wykazały, lub po prostu z operatorem indeksu

if($("#list p.selected")[0] == $("#list p:last-child")[0])... 

ten jest rzadko potrzebne z jQuery. Tam is lepszy sposób!

if($("#list p.selected").is(":last-child")).... 

lub odwrotnie, bardziej czytelny

if($("#list p:last-child").is(".selected")).... 
+0

Tak naprawdę to zrobiłem, ale myślę, że to w zasadzie to samo: jeśli ($ ('# list p: ostatnie dziecko'). HasClass ("wybrane")) ... – Joseph

+14

+1 za kal. . – MGOwen

9

jQuery to obiekt, więc technicznie porównujesz dwa różne (ale podobne) obiekty, które zawsze będą fałszywe.

Spróbuj:

if (jQuery('#list p.selected').get(0) == jQuery('#list p:last-child').get(0)) 

jQuery.get()

Powiązane problemy