Подсветка родительского элемента при наведении на дочерний элемент

0

У меня есть меню с 2 подменю. Используя jQuery, я хочу, чтобы элемент hightlight зависел. Я не могу решить, как выдать ярлык родительского элемента, когда курсор находится на дочернем элементе. Для зависания я использовал класс caled active:

.vertical-active {
background:#0F6;
}

Функция JQuery выглядит так:

$(document).ready(function (e) {
$('.submenu a').hover(

function () {
    $(this).addClass('vertical-active');
    $(this).parent('vertical-links a').addClass('vertical-active');
    },

    function () {
        $(this).removeClass('vertical-active');
        $(this).parent('vertical-links a').removeClass('vertical-active');
    });
});

Проблема в родительском селекторе, но я не знаю, как выбрать подменю родительского элемента.

JSFiddle ссылка: http://jsfiddle.net/6g9tZ/4/

  • 0
    что именно вы хотите выделить ?? Должно ли это быть ul с submenu класса
Теги:

3 ответа

2
Лучший ответ

Используйте .siblings в дополнение к .closest.

FIDDLE

$(document).ready(function (e) {
    $(".vertical-links > li > a").on("mouseenter mouseleave", function(){
        $(this).toggleClass('vertical-active');
    });    

    $('.submenu a').on("mouseenter mouseleave",function () {
        $(this).toggleClass('vertical-active');
        $(this).closest("ul").siblings("a").toggleClass('vertical-active');
    });    
});
  • 0
    Можете ли вы добавить код для выделения родительского элемента при наведении?
  • 0
    Это -> jsfiddle.net/GaurangTandon/6g9tZ/11 ?
Показать ещё 2 комментария
6
$(document).ready(function() {
    $('.submenu a').on('mouseenter mouseleave', function() {
        $(this).add($(this).closest('ul').closest('li').children('a')).toggleClass('vertical-active');
    });
});

FIDDLE

РЕДАКТИРОВАТЬ:

чтобы подчеркнуть родителя, вы бы сделали

$('.vertical-links > li > a').on('mouseenter mouseleave', function() {
    $(this).toggleClass('vertical-active')
});

FIDDLE

  • 0
    Можете ли вы добавить код для выделения родительского элемента при наведении?
  • 0
    @ ИванПанджич - добавлено!
0

Замените соответствующие части кода следующим образом:

$(this).parents('li:eq(1)').find("> a").addClass('vertical-active');
....
$(this).parents('li:eq(1)').find("> a").removeClass('vertical-active');

Одна проблема с вашим кодом заключается в том, что вы искали "родительский <a> ", но такой вещи нет; <a> является дочерним элементом вашего родителя. Итак, здесь мы ищем родительский <li>, а не непосредственный, но фактически бабушка и дедушка, находим его прямой дочерний <a> и выделяем его.

Кроме того, у вас есть parent('vertical-links') который должен быть parent('.vertical-links') (а не точкой: его классом не является элемент).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню