2010-03-15 11 views
26

Fondamentalmente sto costruendo un semplice elenco e uno degli elementi nell'elenco è selezionato. Lo sto facendo facendo in modo che una classe "selezionata" si applichi a qualsiasi elemento che desidero aver selezionato. Ho due pulsanti che vanno avanti e indietro che attraversano questa lista. Tuttavia, quando l'utente arriva al primo o all'ultimo elemento nell'elenco, voglio fare un post. Questo è il punto in cui sono bloccato, perché ho difficoltà ad identificare che l'elemento attualmente selezionato non è il primo o l'ultimo.Come verificare l'uguaglianza DOM con jQuery?

semplice esempio:

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

Diciamo che l'utente preme il pulsante successivo, a questo punto sto controllando per qualcosa di simile a questo:

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

Tuttavia, questa logica sta tornando falso , che mi porta a credere che mi sto avvicinando a questo nel modo sbagliato.

Qual è il modo migliore per controllare questo tipo di logica utilizzando jQuery?

+0

Prova a fare una ricerca per la tua domanda: http://stackoverflow.com/questions/2436966/how-would-you-compare-jquery -objects – PetersenDidIt

+0

L'ho fatto, e non mi interessa paragonare oggetti jQuery in particolare. Quello che voglio è controllare l'uguaglianza dei DOM usando jQuery. Forse questo è uno nella stessa cosa, ma stavo assumendo che gli oggetti jQuery vengano istanziati quando si esegue una query per il DOM e vengono trattati separatamente. – Joseph

+0

Gli oggetti jQuery sono solo matrici di oggetti DOM e possono preformare più azioni su di essi. – PetersenDidIt

risposta

37

Anche se è possibile confrontare gli oggetti jQuery come Matt ha dimostrato, o semplicemente con operatore indice

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

questa è raramente necessaria con jQuery. Ci is un modo migliore!

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

o viceversa, più leggibile

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

In realtà l'ho fatto ma penso che tu sia fondamentalmente la stessa cosa: if ($ ('# lista p: last-child'). HasClass ('selected')) ... – Joseph

+14

+1 per il gioco di parole .. . – MGOwen

9

jQuery è un oggetto, quindi si stanno confrontando tecnicamente due diversi (ma simili) oggetti, che saranno sempre falsi.

Prova:

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

jQuery.get()

Problemi correlati