2009-09-24 18 views

risposta

20

Copia dell'origine da SO1004475 - jQuery CSS plugin that returns computed style of element to pseudo clone that element? - Seguire il collegamento e upvotare lì se lo si ritiene utile.

Sembra ridicolo, ma questa è probabilmente la migliore opzione - rende .css() senza argomenti ottenere un oggetto con tutto questo set di cose.

jQuery.fn.css = (function(css2) { 
    return function() { 
     if (arguments.length) { return css2.apply(this, arguments); } 
     var attr = ['font-family','font-size','font-weight','font-style','color', 
      'text-transform','text-decoration','letter-spacing','word-spacing', 
      'line-height','text-align','vertical-align','direction','background-color', 
      'background-image','background-repeat','background-position', 
      'background-attachment','opacity','width','height','top','right','bottom', 
      'left','margin-top','margin-right','margin-bottom','margin-left', 
      'padding-top','padding-right','padding-bottom','padding-left', 
      'border-top-width','border-right-width','border-bottom-width', 
      'border-left-width','border-top-color','border-right-color', 
      'border-bottom-color','border-left-color','border-top-style', 
      'border-right-style','border-bottom-style','border-left-style','position', 
      'display','visibility','z-index','overflow-x','overflow-y','white-space', 
      'clip','float','clear','cursor','list-style-image','list-style-position', 
      'list-style-type','marker-offset']; 
     var len = attr.length, obj = {}; 
     for (var i = 0; i < len; i++) { 
      obj[attr[i]] = css2.call(this, attr[i]); 
     } 
     return obj; 
    }; 
})(jQuery.fn.css); 

Si noti che questo non cattura tutti i possibili proprietà CSS, in particolare quelli nuovi per CSS3. Ecco uno list of all standard CSS and stable CSS3 properties ed eccone uno di hyphen-prefixed vendor-specific properties (ad esempio -moz-border-start). Se vuoi davvero tutti loro, puoi spigarli da lì.

+4

Questo è enorme .................... – rahul

+0

D'accordo - ma penso che sia quello che l'OP chiedeva. – gnarf

+2

Modificato per evitare di inquinare lo spazio dei nomi 'jQuery.fn' con una funzione' css2'. Altrimenti, questa è roba fantastica. –

3

Per gli stili inline:

var styles = $("#someelement").attr("style"); 

Da lì, si dovrebbe essere in grado di dividere questa stringa se è necessario ciclo gli stili.

Per controllare gli stili individuali, controllare la documentazione:

http://docs.jquery.com/CSS

+0

Ho bisogno anche di attributi impostati in css – newbie

+0

se è possibile – newbie

+0

Forse spiegare cosa stai cercando di realizzare nella tua domanda. Potresti star meglio controllando i singoli stili, o usando classi e usando .hasClass() - gnarf ha un link sotto altrimenti – ScottE

-4
$("#div1).css("background-color"); 

restituirà la proprietà colore di sfondo di un elemento con ID div1.

css(name)

Mi dispiace, non so un modo per ottenere tutte le attributi CSS utilizzando jQuery.

15

Come di jQuery 1.8, si può fare:

$("#yourElement").css("cssText"); 

che utilizza il sottostante window.getComputedStyle(element).cssText. Questo è il modo più semplice.

+1

Questa risposta è probabilmente la migliore del gruppo ... – EJTH

+2

@EJTH Sono l'autore di quel codice all'interno di jQuery ;-) –

+0

Grazie!Mi hai aiutato a risolvere il problema di spostare le cose in un determinato contenitore del dom senza perdere lo stile! :-) Lo uso per qualche progetto per animali domestici, faccio cadere una pagina HTML con box2d ... – EJTH

Problemi correlati