var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];
alert(a==b)
alert(a==$(b))
To zawsze fałsz. Jak porównać dwa elementy w jQuery?jak porównać dwa elementy w jquery
dzięki
var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];
alert(a==b)
alert(a==$(b))
To zawsze fałsz. Jak porównać dwa elementy w jQuery?jak porównać dwa elementy w jquery
dzięki
Można porównać elementy DOM. Pamiętaj, że selektory jQuery zwracają tablice, które nigdy nie będą równe w sensie równości odniesienia.
Zakładając:
<div id="a" class="a"></div>
to:
$('div.a')[0] == $('div#a')[0]
Zwraca true.
Zbieranie wyników wrócisz z kolekcji jQuery nie obsługują zestaw oparty na porównanie. Możesz użyć porównania poszczególnych elementów jeden po drugim, nie ma żadnych narzędzi do tego, o których wiem w jQuery.
Losowe AirCoded przykładem badania "set równości" w 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));
każdym razem wywołać funkcję jQuery(), nowy obiekt jest tworzony i wrócił. Więc nawet kontrole równości na tych samych selektorach zawiodą.
<div id="a">test</div>
$('#a') == $('#a') // false
Powstały obiekt jQuery zawiera szereg elementów, które są dopasowane w zasadzie rodzimych obiektów DOM jak HTMLDivElement
że zawsze odnoszą się do tego samego obiektu, należy więc sprawdzić te równości za pomocą indeksu tablicy jak sugeruje Darin.
$('#a')[0] == $('#a')[0] // true
Działa dobrze! –
Ta metoda ma także tę zaletę, że działa tam, gdzie "==" rozwiązanie nie: '$ (event.target) .is ($ (" # a "))' – Tyson
@DanielS Nie sądzę, że twoje 2 dodane "$ (..) "są wymagane tutaj, ponieważ w pytaniu a i b są już instancjami jquery. Wspomnę też o tym innym osobom, które mogą uważać, że musisz podwoić obciążenie. –
a.is(b)
i sprawdzić, czy nie są one równe korzystanie
!a.is(b)
jak
$b = $('#a')
....
$('#a')[0] == $b[0] // not always true
być może klasa dodany do elementu lub z niego usunięte po pierwsze zadanie
a.not (b) nie jest odwrotnością a.is (b) raczej usuwa elementy b z a. Zamiast tego użyj! A.is (b) –
Tak, masz rację! – Jondi
Have testowałeś to? Jestem prawie pewien, że to nie zwróci prawdziwości ze względu na różnice we właściwości '.selector'. –
Tak, testowałem ten kod na IE6, FF 3.6 i Chrome 4. Zwraca 'true' we wszystkich tych przeglądarkach. –
Zobacz poniższy komentarz autorstwa @ R-U-Bn. Poniżej znajduje się sztuczka: a.is (b) – JCallico