Я бы сделал что-то вроде этого:
function changeColor(arr, colorType){
// Define length of array
var i = arr.length;
// Loop over each item in array
while(i--){
// Create jQuery object with element from array
var $elem = $( arr[i] );
// Run the color change logic
var color = $.color.extract($elem, colorType);
var newColor = $.color.parse(color).add('a', -0.5).toString();
$elem.css(colorType, newColor);
}
}
// Array of jQuery selectors
var elems = ["div#one.footer","div#two.nav"];
// Pass array and color type to changeColor function
changeColor(elems, "background-color");
Эта функция принимает массив строк, которые должны быть действительными селекторами jQuery, и colorType
, который может быть любым цветом (я предполагаю, что ваш плагин поддерживает больше, чем просто background-color
).
EDIT
Упс, у меня там было неверное имя переменной. Это был $elem.css(colorType, color);
, но это должно было быть $elem.css(colorType, newColor);
.
В любом случае, эта функция дает вам большую гибкость, поскольку вы можете изменить тип цвета при вызове функции. Вы должны выполнить одну функцию для каждого массива и просто указать тип цвета. Вы можете легко добавить другой параметр для colorChange
для обработки части 'a', -0.5
.
Этот метод также приводит к меньшему количеству вызовов функций, что, вероятно, сделает его быстрее, чем другие решения здесь.