2014-07-10 6 views
7

Ich lese das Buch „jQuery Pocket Reference“, O'Reilly, 2011 Sie auf der Seite 15 zu setzen, sagte erVerwendet jQuery attr() „css“

‚Zum Beispiel attr (" css Aufruf ", {backgroundColor:" grey "}) ist das gleiche wie das Aufrufen von css ({backgroundColor:" grey "}). '

Aber ich kann nicht das Attr ("css", {}) arbeiten. Mein Testcode: http://jsfiddle.net/4UMN3/4/

$(function() { 
$("#btnChangeColor").click(function() { 
$("#spanText").attr("css", { backgroundColor: "gray" }); 

}); 

}); 

Die css() Methode funktioniert gut, http://jsfiddle.net/4UMN3/5/

Dank

+4

nichts davon in [Docs] no (http://api.jquery.com/ attr /). Könnte ein [Fehler im Buch] sein (http://www.oreilly.com/catalog/errata.csp?isbn = 0636920016182). – Blazemonger

+8

Warum sollten Sie '.attr()' verwenden, wenn Sie '.css()' haben? – j08691

+2

Entspricht das dem [zweiten bestätigten Fehler auf O'Reillys Website] (http://www.oreilly.com/catalog/errata.csp?isbn=0636920016182)? – Blazemonger

Antwort

8

ersetzen:

$("#spanText").attr("css", { backgroundColor: "gray" }); 

mit

$("#spanText").attr('style', 'background-color:gray'); 
2

denke ich jQuery .attr() kann nur beeinflussen Attribute das Element. HTMLElements kennen kein Attribut namens "css" (<div css="something"></div>).

Also, die korrekte Verwendung

$("#spanText").attr("style",{backgroundColor:"gray"}); 

sein würde, aber dies gibt

<span id="spanText" style="[object Object]">This is a test</span> 

Ein Beispiel, das tatsächlich funktioniert, ist

$("#spanText").attr("style","background-color:gray;"); 
+0

Die '.css()' Funktion versteht die Objektliteralsyntax, die '.attr()' Methode nicht. – Alnitak

+0

Ich habe nie etwas anderes behauptet. Ich wollte nur zeigen, warum die gezeigte Syntax nicht funktioniert. – SVSchmidt

+2

Ich habe mich nur zum Vorteil eines Lesers geäußert - kritisiere deine Antwort nicht. – Alnitak

3

Wahrscheinlich war es gemeint sein

$("#spanText").attr('style', 'background-color:gray'); 

Dies kann funktionieren, hat aber einige Probleme:

  • Es ist bevorzugt, style Eigenschaft statt style zu ändern Attribut.
  • Es wird alle zuvor festgelegten Inline-Stile ersetzen.

Dann, wenn Sie jQuery verwenden, verwenden Sie besser css Methode:

$("#spanText").css('background-color', 'gray'); 

Aber style Eigenschaft ist nützlich in Vanille-js:

document.getElementById("spanText").style.backgroundColor = 'gray'; 
0

=> die CSS- Methode modifiziert die Stilattribut nicht das "CSS".

$().att('style' , 'backgroundColor : gray'); 

=> gibt es so etwas wie CSS-Attribut in HTML

1

$("#id").attr('style', 'color:red;cursor:pointer');