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"));

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.


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
}

11
!$.isEmptyObject($.find('#id'))

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


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

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

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.