Vorteile der Verwendung von attr () über addClass in jquery

7

Was sind die Vorteile von attr() anstelle von addClass() in jquery?

    
Steffan Harris 01.02.2012, 04:54
quelle

5 Antworten

23

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

%Vor%

Wo wird $('#div1').addClass('newClass') geben

%Vor%

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.

    
ShankarSangoli 01.02.2012, 05:04
quelle
5

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.

    
cHao 01.02.2012 05:12
quelle
2

attr (a, b) setzt das Attribut "a" eines Elements auf "b".

addClass (a) fügt einem Element die Klasse "a" hinzu

zum Beispiel ...

Html

%Vor%

Skript

%Vor%

Ergebnis

%Vor%

Und ...

Html

%Vor%

Skript

%Vor%

Ergebnis

%Vor%

jQuery-Links:

Ссылка

Ссылка

    
Mikey G 01.02.2012 05:05
quelle
1

.addClass() ist VIEL besser für die Leistung.

Sehen Sie sich diesen Leitfaden zur jQuery-Leistung an: Ссылка

Einer meiner Lieblingsartikel.

    
alt 01.02.2012 05:05
quelle
0

Der einzige Vorteil von attr() Ich weiß, ob es mit SVG funktioniert, addClass() nicht.

Diese Antwort hat einige Details Ссылка

    
Sauce 20.04.2015 23:23
quelle

Tags und Links