var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];
alert(a==b)
alert(a==$(b))
Siempre es falso. ¿Cómo se pueden comparar dos elementos en jQuery?cómo comparar dos elementos en jquery
gracias
var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];
alert(a==b)
alert(a==$(b))
Siempre es falso. ¿Cómo se pueden comparar dos elementos en jQuery?cómo comparar dos elementos en jquery
gracias
Puede comparar los elementos DOM. Recuerde que los selectores de jQuery devuelven matrices que nunca serán iguales en el sentido de igualdad de referencia.
Suponiendo:
<div id="a" class="a"></div>
esto:
$('div.a')[0] == $('div#a')[0]
vuelve verdadera.
La colección resultados que obtiene de vuelta de una colección de jQuery no admiten la comparación basada en el conjunto. Puede usar comparar los miembros individuales uno por uno, sin embargo, no hay utilidades para esto que yo sepa en jQuery.
ejemplo al azar AirCoded de prueba "set igualdad" en jQuery:
$.fn.isEqual = function($otherSet) {
if (this === $otherSet) return true;
if (this.length != $otherSet.length) return false;
var ret = true;
this.each(function(idx) {
if (this !== $otherSet[idx]) {
ret = false; return false;
}
});
return ret;
};
var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];
console.log($(b).isEqual(a));
Cada vez que se llama a la función jQuery(), se crea un nuevo objeto y regresó. Por lo tanto, incluso las comprobaciones de igualdad en los mismos selectores fallarán.
<div id="a">test</div>
$('#a') == $('#a') // false
El objeto jQuery resultante contiene una serie de elementos coincidentes, que son básicamente objetos DOM nativos como HTMLDivElement
que siempre se refieren al mismo objeto, por lo que debe comprobar los de la igualdad mediante el índice de matriz como se sugiere Darin.
$('#a')[0] == $('#a')[0] // true
Para el registro, jQuery tiene una función para este is()
:
a.is(b)
Tenga en cuenta que a
ya es un ejemplo de jQuery.
¡Funciona bien! –
Este método también tiene la ventaja de funcionar donde la solución "==" no: '$ (event.target) .is ($ (" # a "))' – Tyson
@DanielS No creo que haya agregado su 2 ps) "se requieren aquí, ya que en la pregunta ayb ya están las instancias jquery. También lo menciono para otras personas que puedan pensar que tiene que cargar dos veces. –
a.is(b)
y para comprobar si no son iguales uso
!a.is(b)
como para
$b = $('#a')
....
$('#a')[0] == $b[0] // not always true
tal clase añadido al elemento o retirado de él después de la primera asignación
a.not (b) no es el inverso de a.is (b) sino que elimina los elementos b de a. En su lugar use! A.is (b) –
Sí, tiene razón! – Jondi
Tener has probado esto? Estoy bastante seguro de que no volverá a ser cierto debido a las diferencias en la propiedad '.selector'. –
Sí, he probado este código en IE6, FF 3.6 y Chrome 4. Devuelve 'true' en todos estos navegadores. –
Vea el comentario a continuación por @ R-U-Bn. Lo siguiente es el truco: a.is (b) – JCallico