2012-02-13 15 views
8

Sé que usted puede establecer múltiples propiedades CSS de este modo:Obtener múltiples propiedades CSS con jQuery

$('#element').css({property: value, property: value}); 

Pero ¿Cómo consigo múltiples propiedades con CSS? ¿Hay alguna solución?

+0

¿Quiere decir que desea un mapa con un conjunto dado de propiedades CSS? –

+0

¿Qué quiere decir con obtener múltiples propiedades CSS? –

Respuesta

3

Usted puede crear su propia función jQuery para hacer esto:

//create a jQuery function named `cssGet` 
$.fn.cssGet = function (propertyArray) { 

    //create an output variable and limit this function to finding info for only the first element passed into the function 
    var output = {}, 
     self = this.eq(0); 

    //iterate through the properties passed into the function and add them to the output variable 
    for (var i = 0, len = propertyArray.length; i < len; i++) { 
     output[propertyArray[i]] = this.css(propertyArray[i]); 
    } 
    return output; 
}; 

Aquí es una demostración: http://jsfiddle.net/6qfQx/1/ (comprobar su registro de la consola para ver la salida)

Esta función requiere una matriz que se pasará conteniendo las propiedades de CSS para buscar. Uso para esto sería algo así como: método css

var elementProperties = $('#my-element').cssGet(['color', 'paddingTop', 'paddingLeft']); 
console.log(elementProperties.color);//this will output the `color` CSS property for the selected element 
+0

Sí, habría hecho lo mismo. Me pregunto por qué esto no está ya incorporado. Es lógico, ya que puedes establecer una sola propiedad o establecer múltiples propiedades. He asumido automáticamente que puede obtener una sola propiedad e incluso obtener múltiples propiedades (sería pasando una matriz a .css()) pero parece que se olvidó de ella. –

11

¿La manera más fácil? Suelta el jQuery.

var e = document.getElementById('element'); 
var css = e.currentStyle || getComputedStyle(e); 
// now access things like css.color, css.backgroundImage, etc. 
10

de jQuery (a partir de 1,9) dice que puede pasar un array de cadenas de propiedad y ha de devolver un objeto con pares clave/valor.

por ejemplo:

$(elem).css([ 'property1', 'property2', 'property3' ]); 

http://api.jquery.com/css/

+0

Además, FWIW este método es más rápido que llamar '.css()' varias veces ... ¿quién hubiera pensado? ;) [jsperf] (http://jsperf.com/jquery-multiple-css-get) – lakenen

+0

@lakenen [poseído] (http://jsperf.com/jquery-dom-get-multiple-css) su resultado:) – peipst9lker

+0

@ peipst9lker, por supuesto, ¡JS simple es más rápido que jQuery! Sin embargo, tienes que hackear el soporte del navegador (currentStyle vs getComputedStyle). Compensaciones ... – lakenen

Cuestiones relacionadas