2010-03-15 8 views
26

Básicamente estoy construyendo una lista simple, y uno de los elementos de la lista está seleccionado. Estoy logrando esto al tener una clase "seleccionada" aplicada a cualquier elemento que desee haber seleccionado. Tengo dos botones que van hacia adelante y hacia atrás que atraviesan esta lista. Sin embargo, cuando el usuario llega al primer o al último elemento de la lista, quiero volver a enviar una publicación. Aquí es donde estoy atascado, porque tengo problemas para identificar que el elemento seleccionado actualmente no es el primero ni el último.¿Cómo verificar la igualdad de DOM con jQuery?

Ejemplo simple:

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

Digamos que el usuario presiona el botón siguiente, en este momento estoy comprobando algo similar a esto:

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

Sin embargo, esta lógica se vuelve falsa , lo que me lleva a creer que me estoy acercando a esto de la manera incorrecta.

¿Cuál es la mejor forma de comprobar este tipo de lógica usando jQuery?

+0

intentar hacer una búsqueda de tu pregunta: http://stackoverflow.com/questions/2436966/how-would-you-compare-jquery -objetos – PetersenDidIt

+0

Sí lo hice, y no estoy interesado en comparar objetos jQuery en particular. Lo que quiero es verificar la igualdad DOM usando jQuery. Quizás sea uno igual, pero asumí que los objetos jQuery se instancian cuando consulta el DOM y se tratan por separado. – Joseph

+0

Los objetos jQuery son solo matrices de objetos DOM y pueden realizar más acciones en ellos. – PetersenDidIt

Respuesta

37

Aunque se puede comparar objetos jQuery como Matt ha mostrado, o simplemente con el operador de índice

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

esto rara vez es necesaria con jQuery. Hay is una mejor manera!

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

o al revés, más legible

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

De hecho, hice esto, pero creo que es básicamente lo mismo: if ($ ('# list p: last-child'). HasClass ('selected')) ... – Joseph

+14

+1 para el juego de palabras .. . – MGOwen

9

jQuery es un objeto, por lo que estás comparando técnicamente dos objetos diferentes (pero similares), que siempre serán falsos.

Probar:

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

jQuery.get()

Cuestiones relacionadas