Feststellen, ob jQuery kein Element gefunden hat

126

Ich verwende die Selektoren von jQuery, insbesondere den ID-Selektor:

$("#elementId")...

Wie soll ich feststellen, ob jQuery das Element gefunden hat oder nicht? Auch wenn das Element mit der angegebenen ID nicht existiert, gibt mir die nächste Anweisung:[object Object]

alert($("#idThatDoesnotexist"));
Bardock
quelle

Antworten:

187

$('#idThatDoesnotexist').lengthist was du suchst. (Wenn es nichts findet, wird dies === 0.) Ihre bedingte Aussage sollte also wahrscheinlich sein:

if ($ ('# id'). length) {/ * code falls gefunden * /} else {/ * code falls nicht gefunden * /}

Von dieser Warnung wird ein Objekt zurückgegeben, da jQuery (fast) immer das "jQuery-Objekt" zurückgibt, wenn Sie es verwenden. Dies ist ein Wrapper für die Elemente, die jQuery gefunden hat und die eine Methodenverkettung ermöglichen.

Futuraprime
quelle
3
Sie brauchen nicht die Null, $ ('# id'). Länge ist genug (Null == falsch in Javascript)
David Hellsing
13
@ David die Tatsache, dass Sie es nicht brauchen , macht es nicht unbedingt überflüssig, auf den ersten Blick macht es IMO klarer.
Abir
1
@Abir: Es macht es nur klarer, bis Sie an die Syntax ohne sie gewöhnt sind und nicht explizit auf Wahrheit prüfen. Ich schlage vor, sich einfach an die Syntax ohne zu == 0gewöhnen. Sie werden sie überall sehen.
Scott Stafford
@ScottStafford, für mehr Freiraum können Sie auch if (!!$('#id').length)einen Booleschen Cast verwenden.
Daniele Vrut
6
Sie sollten auch überlegen, ob die Vorteile des Speicherns einiger Zeichen die potenzielle Verwirrung ausgleichen, wenn jemand, der mit den Nuancen von Javascript nicht vertraut ist, den Code liest. Meiner Meinung nach nicht die beste Vorgehensweise in Bezug auf die Wartbarkeit.
Matt Carr
26

Futuraprime ist richtig, aber Sie können Ihre Syntax wie folgt verkürzen:

if ($("#id").length) {
   //at least one element was found
} else {
   //no elements found
}
John Hartsock
quelle
11
!$.isEmptyObject($.find('#id'))

Dies gibt true zurück, wenn das Element vorhanden ist, und false, wenn dies nicht der Fall ist.

Spas
quelle
7
$('#my_selector').length > 0 
$('#my_selector').get(0) !== undefined
$('#my_selector')[0] !== undefined

Dies ist die Grundvoraussetzung. Tun Sie jetzt, was Sie wollen.

Blackjoker
quelle