Логика скрытия родительского элемента Jquery скрывает дочернее раскрывающееся меню при наведении мыши

У меня есть ряд div с классом itemcontainer, которые показывают группу значков действий при наведении курсора. Один из значков действий имеет раскрывающееся меню с абсолютной позицией, которая отображается при наведении курсора мыши. Проблема, которую я пытаюсь решить, заключается в том, что раскрывающееся меню охватывает контейнер элементов, и когда вы перемещаете мышь вниз к раскрывающемуся меню, срабатывает логика выхода из контейнера элементов и скрывает раскрывающееся меню и контейнер элементов. Любые предложения, код jquery ниже.

  $(".itemcontainer").live("mouseover", function () {
        $(this).addClass("selecteditemcontainer");
        $(this).find(".actioncontainer").show();

    }).live("mouseout", function () {
            $(this).removeClass("selecteditemcontainer");
            $(this).find(".actioncontainer").hide();

    });

    $(".dropdown").live("mouseover", function () {
        $(this).find(".submenu").slideDown("fast").show();
        $(this).parent().mouseout(function () {
        }, function () {
            $(this).parent().find(".submenu").slideUp('fast'); //When the mouse hovers out of the subnav, move it back up  
        });
    });

person scottrakes    schedule 23.07.2010    source источник


Ответы (1)


Вместо mouseover и mouseout, если элементы являются дочерними, вам нужен mouseenter и mouseleave, которые не срабатывают при переходе от родителя к дочернему элементу.

Из документов mouseleave:

Событие mouseleave отличается от mouseout тем, как оно обрабатывает всплывающие окна событий. Если бы в этом примере использовалось mouseout, то при перемещении указателя мыши за пределы элемента Inner обработчик срабатывал бы. Обычно это нежелательное поведение. Событие mouseleave, с другой стороны, запускает свой обработчик только тогда, когда мышь покидает элемент, к которому она привязана, а не потомок. Таким образом, в этом примере обработчик запускается, когда мышь покидает элемент Внешний, но не элемент Внутренний.

person Nick Craver    schedule 23.07.2010
comment
Любые мысли о том, почему подменю не будет скрываться на mouselave? У меня может быть что-то не так, но я этого не вижу. - person scottrakes; 23.07.2010