Ich versuche, die folgendes zu tun:.hasClass() keine Funktion?
$('.myEm').closest('.area').hasClass('medium').toggleClass('large-4 large-12');
Aber ich erhalte eine Fehlermeldung, .hasClass ist keine Funktion. Was vermisse ich?
Ich versuche, die folgendes zu tun:.hasClass() keine Funktion?
$('.myEm').closest('.area').hasClass('medium').toggleClass('large-4 large-12');
Aber ich erhalte eine Fehlermeldung, .hasClass ist keine Funktion. Was vermisse ich?
Sie können andere Methoden nach der .hasClass()
method nicht so verketten.
Die .hasClass()
method gibt einen booleschen Wert basierend darauf zurück, ob der jQuery-Selektor eine bestimmte Klasse besitzt. Es scheint, wie Sie für die .has()
method suchen, die die Sammlung von Element-Filter (n) auf der Grundlage, ob es ein bestimmtes Nachkomme Element Anpassung der Wähler hat:
$('.myEm').closest('.area').has('.medium').toggleClass('large-4 large-12');
... oder Sie könnten die :has()
selector verwenden als gut:
$('.myEm').closest('.area:has(.medium)').toggleClass('large-4 large-12');
der Grund, warum Sie Kette können die meisten anderen jQuery-Methoden ist, weil sie eine jQuery object zurück. Wenn Sie die Dokumentation zu einer jQuery-Methode oder einem jQuery-Selektor überprüfen, können Sie den Rückgabetyp bestimmen (der angibt, ob Sie anschließend zusätzliche Methoden verketten können). Wie oben erwähnt, wird die .hasClass()
Methode kein jQuery-Objekt zurück, gibt es true
/false
, weshalb die folgende Fehler sehen besagt, dass es nicht eine Funktion ist:
Uncaught
TypeError: $(...).closest(...).hasClass(...).toggleClass is not a function
Danke. Schnelle Frage: "Medium" ist eine Klasse. Muss ich nicht einen Punkt davor haben wie in .has ('. Medium') – santa
@santa - Ja, aktualisiert. Guter Fang. –
Wenn 'jQuery' nichts für' .closes() 'findet, dann rufen Sie' .hasClass() 'auf einem Nicht-Jquery-Objekt an. –