2011-11-14 16 views
9

tengo que comparar dos selectores y me preguntaba ¿por qué este return false en Firebug ... y ¿Cómo puedo comparar dos selectores¿Cómo uso jquery para comparar los dos selectores?

$('.product-info:last') == $('.product-info:last') 

esto es lo que tengo que hacer

var previous = $('.product-info:visible'); 
    if(previous == $('.product-info:last')){ 
     return false; 
    } 
+0

está tratando de comparar el selector? el objeto jquery que devuelve? – Patricia

+0

posible duplicado de [jQuery igualdad de objetos] (http://stackoverflow.com/questions/3176962/jquery-object-equality) – Blazemonger

+0

comparar si es el mismo selector – Trace

Respuesta

13

la razón es porque $('.product-info:last') !== $('.product-info:last') jQuery crear un nuevo objeto para cada uno de ellos, que no son el mismo objeto jQuery.

Uso is lugar para comprobar si los elementos son los mismos.

previous.is('.product-info:last') 
+0

Precaución: mi lectura de [jQuery es()] (http://api.jquery.com/is/) es que no prueba si dos selectores son idénticos ** **, ** simplemente que se solapan * *. Entonces, por ejemplo, esto también funcionaría: 'previous.is (': last')' –

5

Proveedores:

$('.product-info:last').get(0) == $('.product-info:last').get(0) 
+0

Creo que ".get (0)" sería mejor, ya que eso te daría el nodo DOM y no un objeto jQuery. – Pointy

+0

Siempre confundiendo entre esos dos –

+0

sólo funciona si el selector contiene exactamente un elemento DOM. Si el selector selecciona más de un elemento, esta prueba estará incompleta. – Blazemonger

2

intente lo siguiente:

var previous = $('.product-info:visible'); 
if (previous.is('.product-info:last')) { 
    return false; 
}