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?
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?
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
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. –
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.
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' ]);
Ponadto, FWIW ta metoda jest szybsza niż wielokrotne wywoływanie '.css()' ... kto by pomyślał? ;) [jsperf] (http://jsperf.com/jquery-multiple-css-get) – lakenen
@lakenen [posiadane] (http://jsperf.com/jquery-dom-get-multiple-css) Twój wynik:) – peipst9lker
@ peipst9lker, oczywiście zwykły JS jest szybszy niż jQuery! Mimo to musisz zhakować obsługę przeglądarki (currentStyle vs getComputedStyle). Kompromisy ... – lakenen
Chcesz, mapę z danego zbioru właściwości CSS? –
Co masz na myśli przez uzyskanie wielu właściwości css? –