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

Relaterade artiklar