Was sind die Vorteile von attr()
anstelle von addClass()
in jquery?
Wenn Sie die Methode attr
verwenden, um die Klasse eines Elements festzulegen, wird der vorhandene Klassenname mit dem Wert überschrieben, den Sie als zweites Argument an attr
method übergeben.
Wenn Sie die Methode addClass
verwenden, um einem Element eine Klasse hinzuzufügen, fügen Sie einfach die Klasse hinzu und behalten auch die vorhandenen Klassen bei. Wenn die hinzuzufügende Klasse bereits existiert, wird sie ignoriert.
z. B.
%Vor% Die Verwendung von $('#div1').attr('class', 'newClass')
ergibt
Wo wird $('#div1').addClass('newClass')
geben
Daher ist es immer empfehlenswert, addClass
/ removeClass
zu verwenden, um Klassen von HTML-Elementen mit jQuery zu manuplizieren. Aber am Ende kommt es auf Ihre Anforderung an, was wann zu verwenden ist.
addClass()
hat mehrere Vorteile gegenüber der Manipulation der Klasse mit attr('class')
:
Es ist semantisch klarer. addClass
und removeClass
manipulieren das Attribut class
des Elements (oder className
-Eigenschaft), und das ist es auch schon. Es ist etwas schwieriger für sie, den Code für dich zu lügen. Wenn Sie $whatever.addClas("selected")
sagen, erhalten Sie einen Laufzeitfehler, während Sie, wenn Sie $whatever.attr('clas', 'selected')
sagen, nichts zu tun scheinen. Es würde aber immer noch aus JS Sicht "funktionieren", denn wer weiß? Sie könnten wollen ein clas
-Attribut setzen. Das passiert, wenn man versucht, ein Schweizer Taschenmesser als Dosenöffner zu benutzen.
Es funktioniert mit mehreren Klassen. Wenn Sie attr
verwenden, um CSS-Klassen hinzuzufügen und zu entfernen, und es wird immer mehr als eins geben (was eigentlich ziemlich häufig ist) müsste eine String-Verarbeitung durchführen, um sicher zu stellen, dass keine anderen angewandten Klassen gestört werden oder dass die gleiche Klasse 50 Mal wiederholt wird. addClass
und removeClass
machen das für Sie.
Es ist anscheinend viel schneller.
Ich kann mir keine Vorteile von attr('class'...)
über addClass
vorstellen. Im Allgemeinen ist attr
, wenn Sie nicht über eine andere integrierte Möglichkeit verfügen, das Attribut zu bearbeiten. In diesem Fall tun Sie das, also sollten Sie das wahrscheinlich verwenden.