2009-09-24 15 views
13

Necesito obtener la lista de elementos de todos los atributos de css. Cómo puedo hacer eso ?¿Cómo puedo obtener una lista de todos los atributos del elemento css con jQuery?

+0

¿Quieres obtener todas las propiedades de un css de un elemento? – rahul

+0

Sí, necesito obtener todos los atributos CSS que tiene mi elemento seleccionado. – newbie

+0

relacionado: http://stackoverflow.com/questions/754607/can-jquery-get-all-css-styles-associated-with-an-element – Aziz

Respuesta

20

Copiando la fuente desde SO1004475 - jQuery CSS plugin that returns computed style of element to pseudo clone that element? - Por favor, siga el enlace y el votaciones arriba allí si lo encuentra útil.

Parece ridículo, pero esta es probablemente su mejor opción - hace que .css() sin argumentos obtenga un objeto con todo este conjunto de cosas.

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); 

Tenga en cuenta que esto no captura todas las posibles propiedades de CSS, especialmente las nuevas para CSS3. Aquí hay un list of all standard CSS and stable CSS3 properties, y aquí está uno de hyphen-prefixed vendor-specific properties (como -moz-border-start). Si realmente los quieres a todos, puedes recogerlos de allí.

+4

Esto es enorme .................... – rahul

+0

Estoy de acuerdo, pero creo que es lo que el OP estaba pidiendo. – gnarf

+2

Editado para evitar contaminar el espacio de nombres 'jQuery.fn' con una función' css2'. De lo contrario, esto es genial. –

3

Para los estilos en línea:

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

A partir de ahí, usted debería ser capaz de dividir esta cadena si necesita un lazo con los estilos.

Para comprobar los estilos individuales, compruebe la documentación:

http://docs.jquery.com/CSS

+0

Necesito también los atributos que se establecen en css – newbie

+0

si eso es posible – newbie

+0

Quizás explique lo que Tratando de lograr en tu pregunta. Puede ser mejor que busque estilos individuales, o use clases y use .hasClass() - gnarf tiene un enlace debajo de lo contrario – ScottE

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

devolverá la propiedad color de fondo de un elemento con div1 ID.

css(name)

Lo sentimos, no sé una manera de conseguir todos los atributos CSS con jQuery.

15

A partir de jQuery 1.8, que puede hacer:

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

que utiliza el window.getComputedStyle(element).cssText subyacente. Esa es la forma más simple.

+1

Esta respuesta es probablemente la mejor del grupo ... – EJTH

+2

@EJTH Soy el autor de ese código dentro de jQuery ;-) –

+0

¡Gracias!¡Me ayudaste a resolver el problema de mover cosas a un contenedor determinado en el dom sin perder el estilo! :-) Lo uso para un proyecto de mascotas, hacer que una página HTML se rompa con box2d ... – EJTH

Cuestiones relacionadas