首页 > 解决方案 > 关于 JQuery 焦点事件

问题描述

如果我mouseoverfocusin超过菜单 1,菜单 1 中会出现一条蓝线。当我离开菜单 1 时,一条蓝线重复消失并出现。

我希望当我将菜单 1 聚焦到菜单 2 时,必须存在一条蓝线。我试图搜索焦点事件(focus,bluronfocus)。

$("#menu .menu1 > li").on("mouseover focusin", function() {
  var ht = $(this).children("#menu .menu2").outerHeight();
  $(this).addClass("on").children("#menu .menu2").addClass("on");
  $("#menu").addClass("on").css("height", ht + 100);
}).on("mouseleave focusout", function() {
  $(this).removeClass("on").children("#menu .menu2").removeClass("on");
  $("#menu").removeClass("on").css("height", "100px");
});
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

a {
  color: #000;
  text-decoration: none;
}

ul,
ol {
  list-style: none;
}

#menu {
  overflow: hidden;
  position: relative;
  height: 100px;
  transition: height 0.4s;
}

#menu.on {
  background-color: #eee;
}

#menu .menu1 {
  position: relative;
  padding-left: 250px;
  background-color: #fff;
  font-size: 0;
}

#menu .menu1>li {
  display: inline-block;
}

#menu .menu1>li>a {
  display: block;
  position: relative;
  padding: 37px 33px;
  font-size: 18px;
}

#menu .menu1>li>a:before {
  transform: scaleX(0);
  content: "";
}

#menu .menu1>li.on>a {
  color: #0067ac;
}

#menu .menu1>li.on>a:before {
  position: absolute;
  bottom: -5px;
  left: 0;
  z-index: 9999;
  transform: scaleX(1);
  width: 100%;
  height: 6px;
  border-radius: 4px;
  background-color: #0067ac;
  transition: all 0.3s;
}

#menu .menu2 {
  position: absolute;
  top: -9999px;
  left: 0;
  z-index: 2;
  width: 100%;
  padding: 30px;
}

#menu .menu2.on {
  top: 100px;
}

#menu .menu2:after {
  display: block;
  clear: both;
  content: "";
}

#menu .menu2>li {
  float: left;
  width: 25%;
  text-align: left;
}

#menu .menu2>li a {
  display: block;
  position: relative;
  margin: 5px;
  padding: 10px;
  border: 1px solid #0067ac;
  font-size: 15px;
}

#menu .menu2>li>a:hover,
#menu .menu2>li>a:focus {
  background-color: #0067ac;
  color: #fff;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<nav id="menu">
  <ul class="menu1">
    <li>
      <a href="#">menu 1</a>
      <ul class="menu2">
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
      </ul>
    </li>
    <li>
      <a href="#">menu 1</a>
      <ul class="menu2">
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
      </ul>
    </li>
    <li>
      <a href="#">menu 1</a>
      <ul class="menu2">
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
      </ul>
    </li>
    <li>
      <a href="#">menu 1</a>
      <ul class="menu2">
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
        <li><a href="#">menu 2</a></li>
      </ul>
    </li>
  </ul>
</nav>

标签: jqueryfocusout

解决方案


推荐阅读