EntfernenAttr (x) vs. attr (x, '') in jQuery

8

Gibt es generell einen Unterschied zwischen removeAttr(x) und attr(x, '') in jQuery?

Wenn ja, wann soll ich sie verwenden?

    
JoelFan 18.11.2010, 16:55
quelle

5 Antworten

9

Gegeben die Definition von removeAttr aus der jQuery-Bibliothek (siehe unten). Ich würde ja sagen.

%Vor%

Quelle: Jquery 1.4.3 unkomprimierte Version

Obwohl es von Natur aus subjektiv ist. Ich denke, dass die Verwendung von removeAttr ein selbstdokumentierender Ansatz ist. Ich könnte jedoch sehen, dass andere Menschen das Gegenteil denken.

    
JohnFx 18.11.2010 17:01
quelle
6

Sie sind ziemlich verschiedene Operationen:

attr (x, '') setzt ein Attribut auf eine leere Zeichenfolge

removeAttr (x) löscht die Eigenschaft des Objekts nach Möglichkeit oder entfernt sie und setzt sie auf ihren Standardwert zurück, wenn sie von der DTD für diese Objektklasse definiert ist.

    
Orbling 18.11.2010 16:59
quelle
3

.removeAttr(x); entspricht .removeAttribute("x"); , während .attr(x, '') einfach .x auf eine leere Zeichenfolge setzt. Siehe jQuery removeAttr ref und die entsprechenden mozilla removeAttribute ref für weitere Informationen.

    
jball 18.11.2010 16:59
quelle
3

Einige Attribute sind boolesch (ob sie existieren oder nicht existieren). Nehmen wir zum Beispiel das Attribut disabled . Wenn es existiert, dann ist es wahr, es spielt keine Rolle, auf was der Wert eingestellt ist. Sie müssten also .removeAttr('disabled') verwenden, um das Element erneut zu aktivieren. JQuery normalisiert es jedoch ein wenig, Sie könnten .attr('disabled', false); verwenden. Also denke ich, die Antwort ist Semantik.

Bearbeiten:

Diese Antwort hat gerade einige Upvotes bekommen, die darauf aufmerksam gemacht haben, dass ich das vor einigen Jahren beantwortet habe.

Verwenden Sie dies stattdessen für Eigenschaften -

%Vor%

NICHT removeProp ('disabled') verwenden, da dies die Eigenschaft aus dem DOM-Objekt löscht (was Sie nicht vorhaben).

    
John Strickler 18.11.2010 17:01
quelle
2

Erster Unterschied:

%Vor%

Der zweite Unterschied, wahrscheinlich nur mir passiert, ist .removeAttr() funktioniert korrekt in Firefox und IExplorer, aber nicht sehr gut in Chrome und funktionieren überhaupt nicht auf Safari.

    
Matteo Leone 02.08.2011 19:39
quelle

Tags und Links