Es sieht so aus, als würde jQuerys Methode .find()
immer true
zurückgeben. Aber das ist nicht wirklich nützlich, weil Sie zusätzlich die Länge des zurückgegebenen Objekts überprüfen müssen, um zu sehen, ob es wirklich existiert.
Hat jemand eine gute Erklärung für dieses Verhalten?
Beispiel zur Überprüfung, ob Elemente übereinstimmen:
%Vor% $()
und Auswahlmethoden wie find()
und filter()
geben immer ein jQuery-Objekt zurück. So können Sie Methoden verketten. Sie könnten etwas wie
Dies findet alle Listenelemente im Hauptteil und fügt allen einen Absatz hinzu. Wenn $('body').find('li')
false
zurückgibt, weil es keine li enthält, würde die Methode add()
einen Fehler ausgeben, weil% code% nicht möglich ist.
.find()
Methode von jQuery gibt jQuery-Objekt zurück, das in einigen Fällen zu true
ausgewertet werden kann. Aber in der Tat wird es streng ( ===
) mit true
fehlschlagen (der Vergleich wird false
zurückgeben).
Aus diesem Grund sollten Sie für die Zählung der zurückgegebenen Elemente den genauen Vergleich verwenden ( ===
anstelle von ==
) und auf die Eigenschaft .length
prüfen auch über Array
Objekte).
Es ist vollkommen vernünftig, da das jQuery-Objekt nur ein Container für Elemente ist, die Sie gefunden haben. Es muss jQuery-Methoden haben (diejenigen, die Sie für das Ergebnis von .find()
aufrufen können), daher darf es kein boolescher Wert sein.
Tags und Links javascript html jquery