Koken CMS Если класс добавить класс к другому элементу (несколько случаев)
Помимо разного цвета для каждого элемента навигации, когда они активны, мне нужно, чтобы у моего заголовка сайта (цвет фона логотипа) был другой цвет для каждой страницы / альбома.
Когда ссылка внутри навигации активна, .k-nav-current
автоматически добавляется.
Итак, я попробовал это:
if ($("#main li:nth-child(2)").hasClass('.k-nav-current')) {
$("#site-title").addClass("babycurrent");
} else {
};
.babycurrent{
background: rgb(35,235,0);
}
Или вместо #main li:nth-child()
я пробовал:#main a#unique_nav_itemid
a#unique_nav_itemid
Но ни одно из этих решений не работает.
1 ответ
Один метод, который вы можете использовать, чтобы проверить, существует ли элемент в документе:
if($('.k-nav-current').length) {
$("#site-title").addClass("babycurrent");
}
конечно, если длина 0
Считается "фальсией". любое другое положительное число является "правдивым".
Однако для дальнейшей помощи нам нужно увидеть фактическую разметку.
РЕДАКТИРОВАТЬ:
Для вашей текущей настройки вы пытаетесь использовать #main li:nth-child(2)
и проверка его класса. Класс фактически применяется к якору. Вам нужно использовать #main li:nth-child(2) a
if ($("#main li:nth-child(2) a").hasClass('k-nav-current')) {
$("#site-title").addClass("babycurrent");
}
Хотя может быть лучше просто использовать что-то вроде этого (учитывая, что идентификаторы уникальны):
if ($("#baby").hasClass('k-nav-current')) {
$("#site-title").addClass("babycurrent");
}
Наконец, если вы действительно хотите, чтобы это динамично, вы можете сделать что-то вроде этого:
var current = $("a.k-nav-current")[0].id.replace('#','');
$("#site-title").addClass(current + "current");
РЕДАКТИРОВАТЬ:
$( document ).ready(function() {
if ($("#baby").hasClass('k-nav-current')) {
$("#site-title").addClass("babycurrent");
}
});
// or you can do this (commented out) /*
$( document ).ready(function() {
var current = $("a.k-nav-current")[0].id.replace('#','');
$("#site-title").addClass(current + "current");
});
*/