Warum gibt .find () immer true zurück?

7

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?

    
mas-designs 11.01.2012, 09:37
quelle

5 Antworten

6
  

Hat jemand eine gute Erklärung für diese Gewohnheit?

Wenn .find() einen booleschen Wert anstelle eines jQuery -Objekts zurückgeben würde, könnten Sie es nicht zum Verketten verwenden, was eines der Hauptziele von jQuery ist.

    
jensgram 11.01.2012, 09:44
quelle
13

Es wird nicht wahr zurückgegeben. Es gibt eine leere Menge von Elementen zurück, was wahr ist, wenn du == tust. Sie müssen .length überprüfen und prüfen, ob 0 Elemente zurückgegeben wurden.

    
Dogbert 11.01.2012 09:39
quelle
6

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

tun %Vor%

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.

    
Blaise 11.01.2012 09:42
quelle
3

.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.

    
Tadeck 11.01.2012 09:45
quelle
0

Merken Sie sich

%Vor%

liefert das gleiche Ergebnis wie

%Vor%

Eines der Hilfsprogramme von find () besteht in der Verkettung

%Vor%     
Skyrim 11.01.2012 09:48
quelle

Tags und Links