Verkettet HTML5 classList API ohne (Jquery)

8

Gibt es eine Möglichkeit, die HTML5 classList API-Verkettung zu verketten?

das wird nicht funktionieren

%Vor%

solange dies funktioniert

%Vor%

HINWEIS: Bitte keine Frage

    
Gildas.Tambo 22.02.2015, 02:17
quelle

3 Antworten

9

Sie können die Kettenfähigkeit über ein kleines Objekt mit verkettbaren Methoden erzeugen:

%Vor%

Dann können Sie nach Herzenslust ketten:

%Vor%     
user663031 19.03.2015, 11:18
quelle
2

Damit eine Verkettung funktioniert, muss eine Methode das Objekt zurückgeben, mit dem Sie verketten möchten. Da .classList -Methoden weder das classList -Objekt noch das DOM-Objekt zurückgeben, können Sie nicht direkt mit ihnen verketten.

Sie könnten natürlich Ihre eigenen Methoden schreiben und sie dazu bringen, das entsprechende Objekt zurückzugeben und somit die Funktionalität kettenweise wieder zu implementieren, aber Sie müssten sie auf einen Systemprototyp setzen, um sie verwenden zu können sie so leicht.

Ohne kettenfähige Methoden neu zu implementieren, könnten Sie Ihren Code etwas verkürzen:

%Vor%

Wenn Sie den tatsächlichen HTML5-Objekten verkettbare Methoden hinzufügen möchten, können Sie dies tun:

%Vor%

Arbeitsdemo: Ссылка

Oder, wenn Sie eine .classList type Schnittstelle möchten, können Sie dies tun:

%Vor%

Arbeitsdemo: Ссылка

FYI, weil diese beiden Optionen das eigentliche DOM-Element verketten (im Gegensatz zur Methode von torazaburo, die ein benutzerdefiniertes Objekt kettet), können Sie am Ende eine DOM-Elementmethode / -Eigenschaft wie folgt hinzufügen:

%Vor%

Oder Sie können etwas wie folgt tun:

%Vor%     
jfriend00 22.02.2015 02:32
quelle
0

Wenn Sie nur moderne Browser unterstützen, ist die Verkettung einer der wenigen Vorteile, die jQuery immer noch gegen Vanilla-JavaScript hält, aber das sollte Sie nicht aufhalten. Wie oben bei @ jfriend00 angedeutet, können Sie eigene add / remove / toggle-Methoden erstellen, die verkettet werden können, indem Sie einfach das Objekt this zurückgeben.

Hier sind sie:

%Vor%

In Ihrem Fall würden Sie sie dann wie folgt anwenden:

%Vor%

Eine Anmerkung zur Benennung. Ich würde vorschlagen, einfach addClass und removeClass zu verwenden, weil diese Konflikte mit den eigenen Methoden von jQuery führen könnten, oder jemand, der den Code liest, würde sie mit jQuerys Methoden verwechseln. Hier habe ich ein C hinzugefügt, das für Chaining steht, aber Sie können es etwas aussagekräftiger für Sie nennen.

Bearbeiten : Ich habe eine Überprüfung hinzugefügt, um sicherzustellen, dass unsere Methoden nicht bereits früher definiert wurden, um ein Überschreiben zu vermeiden. Ich habe auch den Klassenvariablennamen von cssClass zu htmlClass geändert, weil das korrekter ist (html hat Klassen, css hat Selektoren).

    
Emanuele Feliziani 19.03.2015 11:05
quelle

Tags und Links