2014-07-10 18 views
7

Sto leggendo il libro “jQuery Pocket Reference”, O'Reilly 2011 Nella pagina 15, si leggeUtilizza jQuery attr() per impostare “css”

'Ad esempio, la chiamata attr ("css ", {backgroundColor:" gray "}) equivale a chiamare css ({backgroundColor:" gray "}). '

Ma non riesco a far funzionare attr ("css", {}). Il mio codice di prova: http://jsfiddle.net/4UMN3/4/

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

}); 

}); 

Il metodo css() funziona bene, http://jsfiddle.net/4UMN3/5/

Grazie

+4

nulla in [la documentazione] (http://api.jquery.com/ attr /). Potrebbe essere un [errore nel libro] (http://www.oreilly.com/catalog/errata.csp?isbn = 0.636.920,016182 millions). – Blazemonger

+8

Perché dovresti usare '.attr()' se hai '.css()'? – j08691

+2

Questo corrisponde al [secondo errore confermato sul sito di O'Reilly] (http://www.oreilly.com/catalog/errata.csp?isbn=0636920016182)? – Blazemonger

risposta

8

Sostituire:

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

con

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

Penso .attr di jQuery() può interessare solo gli attributi l'elemento ha. HTMLElements non conosce un attributo chiamato "css" (ovvero <div css="something"></div>).

Quindi, l'uso corretto sarebbe

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

Ma questo uscite

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

Un esempio che funziona davvero è

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

La funzione '.css()' capisce la sintassi letterale dell'oggetto, il metodo '.attr()' no. – Alnitak

+0

Non ho mai affermato qualcosa di diverso. Volevo solo mostrare perché la sintassi mostrata non funziona. – SVSchmidt

+2

Stavo solo commentando a beneficio di qualsiasi lettore - non criticando la tua risposta. – Alnitak

3

Probabilmente, è stato concepito per essere

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

questo può funzionare, ma ha alcuni problemi:

  • E 'preferibile cambiare style proprietà invece di style attributo.
  • Sostituirà tutti gli stili in linea precedentemente impostati.

Quindi, se si utilizza jQuery, meglio utilizzare css metodo:

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

Ma style proprietà è utile in vaniglia-js:

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

=> il metodo css modifica il attributo di stile non "css".

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

=> non esiste una cosa come attributo CSS in HTML

1

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