Интересует такой вопрос, как можно упростить данный скрипт? Учитывая то, что он будет еще больше так как хешей еще 3 штуки, каким образом можно сократить его, сделать более мобильным? Заранее благодарен.
$(window).bind('hashchange', function () {
if (window.location.hash == '#home') {
$('.topnav').css('background-color', '#341f76').css('color', '#000');
$('.bottomnav').css('background-color', '#341f76').css('color', '#000');
$('section.nav div.topnav ul.right a.cta').css('background-color', '#522bcb').css('color', '#fff');
$('section.nav div.bottomnav ul li a').css('color', '#fff');
$('section.nav div.topnav h1').css('color', '#fff');
$('section.nav div.topnav ul li i').css('color', '#fff');
$('section.nav div.topnav ul.right a.phone').css('color', '#fff');
$("section.nav div.bottomnav ul li a").removeClass("active");
$('.menu1').addClass('active');
}
if (window.location.hash == '#about') {
$('.topnav').css('background-color', '#ffa201').css('color', '#000');
$('.bottomnav').css('background-color', '#ffa201').css('color', '#000');
$('section.nav div.topnav ul.right a.cta').css('background-color', '#ffcc01').css('color', '#151515');
$("section.nav div.bottomnav ul li a").removeClass("active");
$('.menu2').addClass('active');
}
if (window.location.hash == '#services') {
$('.topnav').css('background-color', '#354761').css('color', '#fff');
$('.bottomnav').css('background-color', '#354761').css('color', '#fff');
$('section.nav div.topnav ul.right a.cta').css('background-color', '#4d6680').css('color', '#fff');
$('section.nav div.bottomnav ul li a').css('color', '#fff');
$('section.nav div.topnav h1').css('color', '#eee');
$('section.nav div.topnav ul li i').css('color', '#eee');
$('section.nav div.topnav ul.right a.phone').css('color', '#eee');
$("section.nav div.bottomnav ul li a").removeClass("active");
$('.menu3').addClass('active');
}
});
Я бы рекомендовал
Вместо .menu1
, .menu2
, .menu3
как раз и называть классы также, как в хэшах. Или добавлять постфикс. Например .home_page
, .about_page
, .services_page
.
removeClass('active')
- всегда повторяется, значит его можно вынести в самый верх
Все добавления стилей вынести в CSS, где они будут опираться на класс active
верхнего узла - родителя. Т.е. когда у родителя появляется класс active
, то применяются все стили.
В итоге после соблюдения трех пунктов код упростится до:
$(window).bind('hashchange', function () {
let hash = window.location.href.split('#')[1];
$("section.nav div.bottomnav ul li a").removeClass("active");
$('.' + hash + '_page').addClass('active');
});
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Объединяю id города таблицы "Школы", с таблицей "Города" через JOINТеперь необходимо по городу, вытащить еще и его страну, из таблицы "Страны"
Существует проектВ текущем виде, для каждого клиента создается по 3 таблицы в БД MySql, (условно, таблица с конфигурацией пользователя, таблица...
У меня один поток кладет данные в очередь, другой забираетРеализованы потоки в разных классах, и вызываются разными методами и тоже в разных...
Мне необходимо предоставить процентное количество хештегов, которые наиболее часто употребляются с постами в FB, в которых содержится слово...