jQuery Hover函数在窗口大小之后无法更改为单击功能



我已经牢记了两个状态的菜单 - 尺寸大于或等于1025px,下拉式子菜单通过悬停在它们上打开,这很好,在另一侧,在尺寸小于1025px,通过单击它们来打开子菜单。问题在后一种情况下,当调整浏览器的大小小于1025px大小时,悬停功能仍然占上风,只有在刷新浏览器后,单击功能就开始行动,并且一切都很好,直到我再次大小浏览器大小大于大于大于大于大于1025px大小,然后再次以少于1025px的大小调整大小。

感谢您的帮助。
谢谢,
CP

$(function() {
  var isMobile = false;
  $(window).resize(function() {
    if ($(window).width() >= 1025) {
      isMobile = false;
      $('nav li').hover(
        function() {
          $('ul', this).stop().slideToggle(150);
        });
    } else {
      isMobile = true;
      $("nav li").click(function() {
        $('ul', this).stop().slideToggle(150);
      });
    };
  });
  $(window).resize(); // Trigger window resize to check on load
});
@import url(https://fonts.googleapis.com/css?family=Roboto:400,700,500);
/* main Styles */
html {
  box-sizing: border-box;
}
*,
*:before,
*:after {
  box-sizing: inherit;
}
body {
  background: #fafafa;
  font-family: "Roboto", sans-serif;
  font-size: 14px;
  margin: 0;
}
a {
  text-decoration: none;
}
.container {
  width: 1000px;
  margin: auto;
}
h1 {
  text-align: center;
  margin-top: 150px;
}
/* Navigation Styles */
nav {
  background: #2ba0db;
}
nav ul {
  font-size: 0;
  margin: 0;
  padding: 0;
  display: block;
}
nav ul li {
  display: block;
  width: 100%;
}
nav ul li a {
  color: #fff;
  display: block;
  font-size: 14px;
  padding: 15px 14px;
  transition: 0.08s linear;
}
nav ul li:hover {
  background: #126d9b;
}
nav ul li ul {
  display: none;
  border-bottom: 5px solid #2ba0db;
}
nav ul li ul li {
  border-top: 1px solid #444;
  display: block;
}
nav ul li ul li:first-child {
  border-top: none;
}
nav ul li ul li a {
  background: #373737;
  display: block;
  padding: 10px 14px;
}
nav ul li ul li a:hover {
  background: #126d9b;
}
nav .fa.fa-angle-down {
  margin-left: 6px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav>
  <div class="container">
    <ul>
      <li><a href="#">Home</a></li>
      <li><a href="#">About Us</a></li>
      <li> <a href="#">Categories<i class='fa fa-angle-down'></i></a>
        <ul>
          <li><a href="#">Category One</a></li>
          <li><a href="#">Category Two</a></li>
          <li><a href="#">Category Three</a></li>
        </ul>
      </li>
      <li> <a href="#">Services<i class='fa fa-angle-down'></i></a>
        <ul>
          <li><a href="#">Service One</a></li>
          <li><a href="#">Service Two</a></li>
          <li><a href="#">Service Three</a></li>
          <li><a href="#">Service Four</a></li>
          <li><a href="#">Service Five</a></li>
          <li><a href="#">Service Six</a></li>
        </ul>
      </li>
      <li><a href="#">Contact Us</a></li>
    </ul>
  </div>
</nav>

您永远不会在浏览器进行调整时删除旧事件处理程序,您每次都会添加更多的事件处理程序。当其中一个事件发生时,它将执行所有处理程序。

而不是在.resize()处理程序内绑定事件处理程序,而是绑定一次并让它们检查isMobile变量以决定是否做任何事情。

$(function() {
  var isMobile = false;
  $('nav li').hover(function() {
    if (!isMobile) {
      $('ul', this).stop().slideToggle(150);
    }
  }).click(function() {
    if (isMobile) {
      $('ul', this).stop().slideToggle(150);
    }
  });
  $(window).resize(function() {
    isMobile = $(window).width() < 1025;
  });
  $(window).resize(); // Trigger window resize to check on load
});
@import url(https://fonts.googleapis.com/css?family=Roboto:400,700,500);
/* main Styles */
html {
  box-sizing: border-box;
}
*,
*:before,
*:after {
  box-sizing: inherit;
}
body {
  background: #fafafa;
  font-family: "Roboto", sans-serif;
  font-size: 14px;
  margin: 0;
}
a {
  text-decoration: none;
}
.container {
  width: 1000px;
  margin: auto;
}
h1 {
  text-align: center;
  margin-top: 150px;
}
/* Navigation Styles */
nav {
  background: #2ba0db;
}
nav ul {
  font-size: 0;
  margin: 0;
  padding: 0;
  display: block;
}
nav ul li {
  display: block;
  width: 100%;
}
nav ul li a {
  color: #fff;
  display: block;
  font-size: 14px;
  padding: 15px 14px;
  transition: 0.08s linear;
}
nav ul li:hover {
  background: #126d9b;
}
nav ul li ul {
  display: none;
  border-bottom: 5px solid #2ba0db;
}
nav ul li ul li {
  border-top: 1px solid #444;
  display: block;
}
nav ul li ul li:first-child {
  border-top: none;
}
nav ul li ul li a {
  background: #373737;
  display: block;
  padding: 10px 14px;
}
nav ul li ul li a:hover {
  background: #126d9b;
}
nav .fa.fa-angle-down {
  margin-left: 6px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav>
  <div class="container">
    <ul>
      <li><a href="#">Home</a></li>
      <li><a href="#">About Us</a></li>
      <li> <a href="#">Categories<i class='fa fa-angle-down'></i></a>
        <ul>
          <li><a href="#">Category One</a></li>
          <li><a href="#">Category Two</a></li>
          <li><a href="#">Category Three</a></li>
        </ul>
      </li>
      <li> <a href="#">Services<i class='fa fa-angle-down'></i></a>
        <ul>
          <li><a href="#">Service One</a></li>
          <li><a href="#">Service Two</a></li>
          <li><a href="#">Service Three</a></li>
          <li><a href="#">Service Four</a></li>
          <li><a href="#">Service Five</a></li>
          <li><a href="#">Service Six</a></li>
        </ul>
      </li>
      <li><a href="#">Contact Us</a></li>
    </ul>
  </div>
</nav>

最新更新