о фокус-событии JQuery - PullRequest
       27

о фокус-событии JQuery

1 голос
/ 30 сентября 2019

Если я mouseover или focusin над меню 1, в меню 1 появляется синяя линия. Когда я фокусируюсь на меню 1, синяя линия повторяется, исчезают и появляются.

Я хочу, когда я фокусируюсьот меню 1 до меню 2, синяя линия должна существовать. Я пытался найти событие фокусировки (focus, blur, onfocus и т. Д.).

$("#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>
...