2010-05-03 13 views
7

Básicamente estoy tratando de guardar todas las propiedades CSS actuales de un elemento en un var/array local. Traté:Guarde todas las propiedades css del elemento usando jquery

el.css(); 

y

el.css("*"); 

sin suerte.

¿Hay alguna sugerencia rápida para hacerlo?

+0

'el.css() cada uno (.) 'quizás? – dnagirl

+0

¿Puedes leer mis pensamientos? ¡Solo quería hacer esta pregunta debido a mi problema de css hover! http://stackoverflow.com/questions/2754546/prevent-default-hover WOW – meo

Respuesta

6

He actualizado la respuesta a ser más eficiente que también proporciona un trabajo demo ...

$(function() { 
     // element tag example p and element id 
     function get_element_style(element, id){ 
      var css = {}; 
      $('<iframe id="get-style-'+id+'" style="display:none"/>').appendTo('body'); 
      $('#get-style-'+id).contents().find('body').append('</'+element+'>'); 
      $el = $('#get-style-'+id).contents().find('body').find(element); 
      var defaults_css = $el.getStyles(); 
      $('#get-style-'+id).remove(); 
      var element_css = $('#'+id).getStyles(); 
      for (var i in element_css) { 
       if (element_css[i] !== defaults_css[i]) { 
        css[i] = element_css[i]; 
       } 
      } 
      return css; 
     } 

     var properties = get_element_style('p', 'test-p'); 

    }); 

El problema cuando se obtiene el estilo de un elemento es que no se obtiene solo el valor establecido sino también los valores predeterminados. con este código, estoy tratando de obtener solo los valores establecidos de un elemento. este trabajo tanto con inline estilo, así como con <style> y <link>

+1

Esto solo obtendrá propiedades CSS especificadas en línea. Cualquier cosa que provenga de un archivo CSS externo o la etiqueta '