Antwort #563 am: 25. Mai 2021, 18:09:39
Interessant. Ja die Begründung des Entwicklers ist sinnig.
Ein Fix wie ich ihn mir vorstelle am Beispiel der komprimierten Datei.
Suche:
e.setAttribute("class",(e[$]("class")||"").trim()+" "+t)
Ersetze mit:
e.className += (e[$]("class") != "" ? (" " + t) : t)
Suche:
e.setAttribute("class",(e[$]("class")||"").replace(a," "))
Ersetze mit:
e.setAttribute("class",(e[$]("class")||"").replace(a,""))
Damit sind die beiden Funktionen
addClass() und
removeClass(), wie sie unkomprimiert heißen, angepasst worden.
Vor allem wird bei
removeClass(), also dem Entfernen einer Klasse nicht " " sondern "", also kein Leerzeichen sondern ein leerer String gesetzt, also Nichts.
Beim Setzen einer Klasse wird ein Leerzeichen vor den hinzuzufügenden Klassennamen nur dann gesetzt wenn bereits eine Klasse vorhanden ist.
Konnte bislang kein Funktionsproblem an meiner Lösung entdecken, müsste aber mal in diversen Browsern getestet werden.
Die Lösung ist aber nicht 100% astrein. Sollte das Skript eine Klasse entfernen, die als zweites steht, bleibt ein Leerzeichen hinter der verbleibenden Klasse stehen.
Jedenfalls kann jQuery das Ganze mittels
removeClass() und
addClass() ohne Leerzeichen, geht also.
Gruß,
noRiddle