Testen Sie, ob zwei Elemente gleich sind


86

Ich würde vermuten, dass dies zunächst funktioniert:

if ($('#element') == $('#element')) alert('hello');

Aber das tut es nicht. Wie testet man, ob Elemente gleich sind?

Antworten:


136

Ab jquery 1.6 können Sie jetzt einfach Folgendes tun:

$element1.is($element2)

7
Dies ist die beste Antwort für alle aktuellen Versionen von Jquery.
Chris Jaynes

Eine andere, von der ich mir wünschte, ich könnte sie jedes Mal verbessern, wenn ich am Ende dieselbe Frage google und diese Antwort finde
Freifaller

75

Das sollte funktionieren:

if ($(this)[0] === $(this)[0]) alert('hello');

so sollte das sein

if (openActivity[0] == $(this)[0]) alert('hello');

3
Sollte Ihr zweites Beispiel nicht === und nicht == sein, um Ihr erstes Beispiel richtig widerzuspiegeln?
Prusprus

3
Diese Antwort mag in älteren Versionen von jquery richtig gewesen sein, aber die meisten Leute verwenden wahrscheinlich eine Version, die unterstützt$.is
Chris Jaynes


12

Wie bereits jemand sagte, generiert dasselbe HTML-Element, das in zwei verschiedenen Momenten eingeschlossen ist, zwei verschiedene jQuery-Instanzen, sodass sie niemals gleich sein können.

Stattdessen können die umschlossenen HTML-Elemente auf diese Weise verglichen werden, da der von ihnen belegte Speicherplatz derselbe ist, wenn es sich um dasselbe HTML-Element handelt.

var LIs = $('#myUL LI');
var $match = $('#myUL').find('LI:first');

alert(LIs.eq(0) === $match); // false
alert(LIs.get(0) === $match.get(0)) // TRUE! yeah :)

Freundliche Grüße!


5

Ich würde addClass () zum Markieren des geöffneten verwenden und Sie können das leicht überprüfen.


3

9 Jahre später ohne jQuery

Wenn zwei Elemente dasselbe sind, müssen zwei Elemente denselben Zeiger haben. So,

document.body === document.body // true
document.querySelector('div') === document.querySelector('div') // true
document.createElement('div') === document.createElement('div') // false

0

Wie seidig oder Santi sagte, wäre eine eindeutige ID oder Klasse der einfachste Weg, um zu testen. Der Grund dafür, dass Ihre if-Anweisungen nicht wie erwartet funktionieren, liegt darin, dass zwei Objekte verglichen werden und festgestellt wird, ob sie dasselbe Objekt im Speicher sind.

Da es sich immer um ein neues Objekt handelt, das von $ (this) erstellt wird, können sie sich niemals gleichen. Deshalb müssen Sie eine Eigenschaft des Objekts testen. Sie könnten ohne eindeutige ID / Klasse davonkommen, wenn für jedes openActivity-Element garantiert ein anderer Inhalt vorhanden wäre, gegen den Sie testen könnten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.