javascript - hur man jämför två element i jquery
var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];
alert(a==b)
alert(a==$(b))
Det är alltid falskt. Hur kan du jämföra två element i jQuery?
tack
Svar #1
För protokollet har jQuery en is()-funktion för detta:
a.is(b)
Observera att a redan är en jQuery-instans.
Svar #2
Du kan jämföra DOM-element. Kom ihåg att jQuery-selektorer returnerar arrayer som aldrig kommer att vara lika i betydelsen referenslikhet.
Förutsatt:
<div id="a" class="a"></div>
det här :
$('div.a')[0] == $('div#a')[0]
returnerar sant.
Svar #3
Varje gång du anropar jQuery()-funktionen skapas ett nytt objekt som returneras. Så även likhetskontroller på samma selektorer kommer att misslyckas.
<div id="a">test</div>
$('#a') == $('#a') // false
Det resulterande jQuery-objektet innehåller en matris av matchande element, som i grund och botten är vanliga DOM-objekt som HTMLDivElement som alltid refererar till samma objekt, så du bör kontrollera dessa för likhet med hjälp av matrisindexet som Darin föreslog.
$('#a')[0] == $('#a')[0] // true
Svar #4
a.is(b)
och för att kontrollera om de inte är lika använd
!a.is(b)
vad gäller
$b = $('#a')
....
$('#a')[0] == $b[0] // not always true
kanske klass lades till på elementet eller togs bort från det efter den första tilldelningen
