代码之家  ›  专栏  ›  技术社区  ›  scottrakes

jquery parent div hide logic在mouseout上隐藏子下拉菜单

  •  1
  • scottrakes  · 技术社区  · 14 年前

    我有一行带有“itemcontainer”类的div,在mouseover上显示一组操作图标。其中一个动作图标有一个下拉菜单,其绝对位置显示在鼠标上方。我尝试解决的挑战是下拉菜单跨越项目容器,当您向下移动鼠标到下拉菜单时,项目容器鼠标输出逻辑将启动并隐藏下拉菜单和项目容器。任何建议,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  
            });
        });
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   Nick Craver    14 年前

    而不是 mouseover mouseout 事件,如果元素是子元素,则需要 mouseenter mouseleave 事件,在从父级到子级时不会触发。

    the mouseleave docs :

    这个 鼠标器 事件不同于 鼠嘴 以处理事件冒泡的方式。如果 鼠嘴 在本例中使用,然后当鼠标指针移出 元素,将触发处理程序。这通常是不受欢迎的行为。这个 鼠标器 另一方面,事件只在鼠标离开绑定到的元素(而不是后代)时触发其处理程序。因此在本例中,当鼠标离开 元素,但不是 元素。