Здравствуйте!
Для демонстрации цветовых схем шаблона, нужно сделать переподключение css файлов в head (нажал на кнопку - подключился новый файл стилей, а предыдущий удалился или отключился) и настройки сохранились в cookie.
Есть код, он работает при переключении световых схем, но очень громоздкий (хотел бы его сократить), потому что таких схем 20 штук + неправильно работают cookie - сохраняют только последний добавленный файл.
Пожалуйста, помогите решить проблему.
HTML структура (при нажатии на li подключается нужный файл стилей):
<div class="js_color-scheme">
<div>Цвет</div>
<ul >
<li class="color_2A6F66"></li>
<li class="color_3E94B2"></li>
<li class="color_3F4B6E"></li>
<li class="color_7C5469"></li>
<li class="color_282c2f"></li>
<li class="color_564C6E"></li>
<li class="color_685A44"></li>
<li class="color_809D75"></li>
<li class="color_34233F"></li>
<li class="color_77758D"></li>
<li class="color_264566"></li>
<li class="color_577038"></li>
<li class="color_858585"></li>
<li class="color_B24D1B"></li>
<li class="color_B5654B"></li>
<li class="color_B23831"></li>
<li class="color_BB9E8E"></li>
<li class="color_BD6578"></li>
<li class="color_C49A1C"></li>
<li class="color_C54B54"></li>
<li class="color_E1B52D"></li>
</ul>
</div>
jQuery (и так 20 раз =)
$('.color_2A6F66').click(function() {
$('head').append('<link rel="stylesheet" type="text/css" href="http://site.com/templates/template-name/css/color-scheme/color_2A6F66.css">');
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_3E94B2.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_3F4B6E.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_7C5469.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_282c2f.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_564C6E.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_685A44.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_809D75.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_34233F.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_77758D.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_577038.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_858585.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_B24D1B.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_B5654B.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_B23831.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_BB9E8E.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_BD6578.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_C49A1C.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_C54B54.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_E1B52D.css"]').prop('disabled', true);
$.cookie('js_activeColor-1', 'activeClass-1');
});
if ($.cookie('js_activeColor-1') == 'activeClass-1') {
$('head').append('<link rel="stylesheet" type="text/css" href="http://site.com/templates/template-name/css/color-scheme/color_2A6F66.css">');
}
$('.color_3E94B2').click(function() {
$('head').append('<link rel="stylesheet" type="text/css" href="http://site.com/templates/template-name/css/color-scheme/color_3E94B2.css">');
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_2A6F66.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_3F4B6E.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_7C5469.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_282c2f.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_564C6E.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_685A44.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_809D75.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_34233F.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_77758D.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_577038.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_858585.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_B24D1B.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_B5654B.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_B23831.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_BB9E8E.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_BD6578.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_C49A1C.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_C54B54.css"]').prop('disabled', true);
$('link[href="http://site.com/templates/template-name/css/color-scheme/color_E1B52D.css"]').prop('disabled', true);
$.cookie('js_activeColor-2', 'activeClass-2');
});
if ($.cookie('js_activeColor-2') == 'activeClass-2') {
$('head').append('<link rel="stylesheet" type="text/css" href="http://site.com/templates/template-name/css/color-scheme/color_3E94B2.css">');
}
Запомни: если ты при написании программы занимаешься тем что копируешь одни и те же части кода - ты занимаешься явно не программированием. Более того - со временем у тебя должен выработаться стойкий рвотный рефлекс от такой работы. Вот, взгляни, как должна выглядеть на самом деле твоя работа:
// конфиг
var base_url = 'http://site.com/templates/template-name/css/color-scheme/color_';
var all_colors = [
'2A6F66'
,'3E94B2'
,'3F4B6E'
,'7C5469'
,'282c2f'
,'564C6E'
,'685A44'
,'809D75'
,'34233F'
,'77758D'
,'577038'
,'858585'
,'B24D1B'
,'B5654B'
,'B23831'
,'BB9E8E'
,'BD6578'
,'C49A1C'
,'C54B54'
,'E1B52D'
];
// добавляем в head ОДИН пустой файл css чтобы потом менять его href
$('head').append('<link rel="stylesheet" type="text/css" href="" id="custom_style">');
// вешаем обработчик на каждую из кнопок с цветами
$.each(all_colors, function( index, color ) {
$('.color_'+color).click(function() {
// указываем новый href
$('#custom_style').attr('href', base_url+color+'.css')
// запоминаем цвет
$.cookie('js_activeColor', color);
});
});
// при начальной загрузке ставим цвет который запомнили в href
var old_color = $.cookie('js_activeColor');
$('#custom_style').attr('href', base_url+old_color+'.css')
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я пытаюсь отметить чекбокс при нажатии, использую атрибут checkedНапример если стоит галочка для атрибута Возраст, то появляется поле ввода...
Нужно найти ссылку по тексту "Pages" и если такая ссылка присутствует на странице, тогда поменять ее текст на SponsorshipИнтересует реализация на jQuery...