2009-05-24 3 views
22

Was wird zurückgegeben, wenn $ ('# id') mit nichts übereinstimmt? Ich dachte, es wäre null oder falsch oder etwas ähnliches, also habe ich versucht, es so zu überprüfen:

Aber das hat nicht funktioniert.

Antwort

44

Sie finden, wie viele Elemente wurden unter Verwendung abgestimmt:

$('selector').length 

Um zu überprüfen, ob keine Elemente angepasst wurden, zu verwenden:

var item = $('#item'); 
if (item.length == 0) { 
    // ... 
} 
+5

Ja, das ist der richtige Weg. Um die Frage zu beantworten, gibt sie jedoch ein Objekt/Array von DOM-Elementen zurück, die übereinstimmen. Und die Eigenschaft 'length' kann für jedes JavaScript-Objekt (Array, String, etc ...) verwendet werden, um seine Länge zu bestimmen (Anzahl Elemente, Anzahl Zeichen, etc ...). – KyleFarris

+2

benutze einfach if (item.length) – redsquare

5

Ein jQuery-Objekt, das keine DOM-Knoten enthält.

sollten Sie in der Lage sein

var item = $('#item'); 
if (!item[0]){ 
    ... 
} 

für Ihre Existenzprüfung zu verwenden.

1

Ein Alias ​​der Länge Attribut ist die Größe() -Methode . So könnte man im Grunde auch abfragen:

$ ("Selektor") size()

, um zu sehen, wie viele Elemente aufeinander abgestimmt sind..

7

Während $('selector').length ist großartig für das Finden, wie viele Objekte Ihr Selektor übereinstimmt, ist es tatsächlich völlig unnötig. Die Sache mit jQuery ist, dass alle Selektor-basierten Funktionen intern die Länge verwenden, also könnten Sie einfach $(selector).hide() (oder was auch immer) machen und es wird keine Aktion für einen leeren Satz ausgeführt.

+0

Das ist normalerweise korrekt, aber hin und wieder muss man nur nach dem Vorhandensein eines Elements suchen. Guter Punkt obwohl, so +1 sowieso, da du in den meisten Fällen richtig bist. –