2012-02-13 10 views
8

Wiem, że można ustawić wiele właściwości CSS tak:Pobierz różne właściwości CSS z jQuery

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

Ale jak mogę dostać z wielu właściwości CSS? Czy istnieje jakieś rozwiązanie?

+0

Chcesz, mapę z danego zbioru właściwości CSS? –

+0

Co masz na myśli przez uzyskanie wielu właściwości css? –

Odpowiedz

3

Można utworzyć własną funkcję jQuery, aby to zrobić:

//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; 
}; 

Oto demo: http://jsfiddle.net/6qfQx/1/ (sprawdź dziennik konsoli widzieć wyjście)

Ta funkcja wymaga tablica do przekazania zawierająca właściwości CSS do wyszukiwania. Wykorzystanie do tego byłoby coś jak: metody 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

Tak, zrobiłbym to samo. Właśnie zastanawiałem się, dlaczego to nie jest już wbudowane. Jest to po prostu logiczne, ponieważ możesz ustawić pojedynczą właściwość lub ustawić wiele właściwości. Automatycznie założyłem, że można uzyskać jedną właściwość, a nawet uzyskać wiele właściwości (byłoby przekazywanie tablicy do .css()), ale po prostu zapomniały. –

11

Najłatwiejszy sposób? Upuść jQuery.

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

jQuery (jak 1,9) mówi, można przekazać tablicę ciągów własności i zwróci obiekt z par klucz/wartość.

np

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

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

+0

Ponadto, FWIW ta metoda jest szybsza niż wielokrotne wywoływanie '.css()' ... kto by pomyślał? ;) [jsperf] (http://jsperf.com/jquery-multiple-css-get) – lakenen

+0

@lakenen [posiadane] (http://jsperf.com/jquery-dom-get-multiple-css) Twój wynik:) – peipst9lker

+0

@ peipst9lker, oczywiście zwykły JS jest szybszy niż jQuery! Mimo to musisz zhakować obsługę przeglądarki (currentStyle vs getComputedStyle). Kompromisy ... – lakenen

Powiązane problemy