¿Cómo es que la ecuación en el título es falsa? ¿Cómo verificar si dos selectores jQuery apuntan al mismo objeto DOM?
Respuesta
Usted está comparando dos objetos jQuery distintos, porque se llama a $()
dos veces (una para cada lado de la ecuación), y as MooGoo explains jQuery crea nuevos objetos envolventes para cada vez que la llame. Es por eso que la comparación termina volviendo falso.
Puede extraer un objeto DOM de cada objeto jQuery usando get()
o eliminación de referencias de matriz, luego compare estos elementos. La siguiente ambos devuelven cierto porque ambos selectores idénticos coinciden con el mismo elemento body
DOM:
$('body').get(0) == $('body').get(0)
$('body')[0] == $('body')[0]
Si quieres poner a prueba contra un selector de jQuery, utilice is()
. Tenga en cuenta que, a menos que los selectores sean idénticos, los selectores que use pueden no coincidir necesariamente con los mismos elementos DOM (es mejor utilizar los anteriores). Esto también devuelve verdadero:
$('body').is('body')
Uso $ .is()
comprobar la hora actual conjunto combinado de elementos contra un selector, elemento u objeto jQuery y regresar
true
si al menos uno de estos elementos coincide con el argumentos dados ...A diferencia de otros métodos de filtrado,
.is()
no crea un nuevo objeto jQuery. En cambio, le permite probar el contenido de un objeto jQuery sin modificaciones. Esto es a menudo devoluciones de llamada dentro útiles, tales como controladores de eventos ...
Consulte otras respuestas para obtener una explicación real de por qué necesita $ .is(). – pettazz
Debido jQuery crea un nuevo objeto de contenedor para cada $
llamada, y en Javascript todos los objetos son distintos, incluso si tienen exactamente los mismos métodos de propiedades/.
Por otro lado, document.body == document.body
evaluaría a true
.
Usted fue el primero en explicar la creación del objeto contenedor. +1 –
Sí, di mi voto por la misma razón. – BoltClock
- 1. document.activeelement devuelve cuerpo
- 2. ¿Por qué is_array() devuelve falso?
- 3. System.Net.HttpWebResponse.GetResponseStream() devuelve el cuerpo truncado en WebException
- 4. ¿Por qué esta declaración IF devuelve falso?
- 5. ¿Por qué isNaN (123.) Devuelve falso?
- 6. Por qué los métodos de interfaz no tienen cuerpo
- 7. Modificar el cuerpo HttpServletRequest
- 8. Cuerpo de Javascript OnClick
- 9. mailto: Cuerpo de formatear
- 10. HttpDelete con cuerpo
- 11. Cuerpo flotante transparente
- 12. HTTP Post Con Cuerpo
- 13. Regex Extract html Cuerpo
- 14. PHP5-IMAP '¡No tengo cuerpo!'
- 15. No getElementById para el cuerpo?
- 16. Javascript - cabeza, cuerpo o jQuery?
- 17. ¿Por qué (= (vector nil) (vec nil)) devuelve falso?
- 18. ¿por qué podría un cheque if (document.addEventListener) devuelve falso
- 19. cocos2d: ¿por qué convertToGL, y por qué addChild CCSprite antes de su cuerpo?
- 20. Meta Tags en el cuerpo
- 21. int.TryParse() devuelve falso para "#. ##"
- 22. cuerpo desencadenan clic con jQuery
- 23. Doxygen en el cuerpo comenta
- 24. JavaScript externo - cuerpo o cabeza?
- 25. Texto cuerpo de Scrapy solamente
- 26. Apache HttpClient GET con cuerpo
- 27. get_browser() devuelve FALSO
- 28. ModelState.IsValid == falso, ¿por qué?
- 29. SignedXml checksignature devuelve falso
- 30. WCF sobre HTTPS y firmando el cuerpo
La primera oración solo está clara si ya sabes que la función $() crea objetos NUEVOS, por lo que la respuesta de MooGoo es un poco más explicativa. Si tengo 'function a() {return true; } ', entonces' a() == a() 'es verdadero. –
@Jonathon: Tienes razón. Voy a aclarar mi respuesta también. – BoltClock
En caso de que no esté claro anteriormente, 'is' no prueba la igualdad, prueba si al menos un elemento en el conjunto coincide con el selector dado. Ej '$ ('# cb'). Is (': checked')'. – Flash