Vorteile der Verwendung von attr() über addClass in jquery
Was sind die Vorteile der Verwendung von attr()
anstatt addClass()
in jquery?
- Führen Sie tests durch Sie selbst: jsperf.com/jquery-addclass-vs-attr-class
- Leistung, während manchmal wichtig ist, ist nicht der alleinige entscheidende Faktor, was "gut" oder "schlecht". Die Frage, die sich vermutlich fragt, um die Vorteile jeder Art, nicht nur speedwise.
- Für mich ist es addClass, die schneller auf jsperf.com... Es ist gut, weil ich früher immer addClass ich hatte Angst, alles zu ändern :-p
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie
attr
- Methode die Klasse von jedem element überschreibt er die bestehenden Klassennamen mit was auch immer Wert übergeben Sie als zweites argument anattr
Methode.Wo, wie, wenn Sie
addClass
Methode zum hinzufügen einer Klasse zu einem element-es wird fügen Sie einfach die Klasse und auch behalten die bestehenden Klassen. Wenn die Klasse hinzufügen, die bereits vorhanden ist, dann wird es einfach ignorieren.E. g.
Mit
$('#div1').attr('class', 'newClass')
gebenWo, wie mit
$('#div1').addClass('newClass')
gebenSo ist es immer adviseable zu verwenden
addClass
/removeClass
zu manupulate Klassen der html Elemente mit jQuery. Aber am Ende, es hängt von Ihrer Anforderung, was Wann zu benutzen ist.addClass()
hat mehrere Vorteile, über die Manipulation der Klasse mitattr('class')
:Es ist semantisch klarer.
addClass
undremoveClass
manipulieren das elementclass
Attribut (oderclassName
- Eigenschaft), und das ist über es. Es ist ein wenig schwieriger für Sie, um den code an dir liegen. Wenn Sie sagte$whatever.addClas("selected")
würden Sie einen Laufzeitfehler erhalten, in der Erwägung, dass, wenn Sie sagte$whatever.attr('clas', 'selected')
, es wäre einfach nicht scheinen, nichts zu tun. Es würde immer noch "Arbeit" aus JS Sicht, obwohl, weil, wer weiß? Sie konnte wollen um eineclas
Attribut. Das ist die Art von Sache, die passiert, wenn Sie versuchen, ein Schweizer Armee-Messer als ein Dosenöffner.Es arbeitet mit mehreren Klassen. Wenn Sie
attr
hinzufügen und entfernen von CSS-Klassen, und es wird immer mehr als ein (das ist sehr verbreitet, tatsächlich), Sie würde tun müssen, einige string-Verarbeitung, um sicherzustellen, nicht zu stören keine anderen Klassen angewendet werden oder die gleichen Klasse 50 mal wiederholt.addClass
undremoveClass
für Sie tun.Es ist offenbar viel schneller.
Kann ich nicht wirklich glaube, keine Vorteile
attr('class'...)
überaddClass
. Generellattr
ist, wenn Sie nicht über einige andere Art und Weise zu manipulieren, das Attribut. In diesem Fall werden Sie das tun, sollten Sie wahrscheinlich verwenden.attr(a,b) legt ein element "a" - Attribut auf "b".
addClass(a) fügt die "a" - Klasse zu einem element
zum Beispiel...
Html
Skript
Ergebnis
Und...
Html
Skript
Ergebnis
jQuery Links:
http://api.jquery.com/attr/
http://api.jquery.com/addClass/
.addClass()
ist VIEL besser für die performance.Schauen Sie sich dieses Handbuch zu jQuery performance: http://net.tutsplus.com/tutorials/javascript-ajax/10-ways-to-instantly-increase-your-jquery-performance/
Einer meiner Lieblings-Artikel.
Der einzige Vorteil, den
attr()
ich wissen, ob es funktioniert, mit SVG -addClass()
nicht.Diese Antwort hat einige details https://stackoverflow.com/a/10257755/2393562