javascript - 切换类不适用于推送菜单

标签 javascript jquery menu navigation

你能帮我告诉我为什么这段代码不起作用吗?单击“.push-button”时,它应该打开“#push-menu”并且可以正常工作,但另一部分不起作用,而不是在第一次单击时显示元素,然后在第二次单击时隐藏元素,当我打开菜单时它甚至没有显示它们它是空的,只有白色!

$(document).ready(function () {
 $(".push-button").click(function () {
  $("#push-menu").toggle(
    function (){
      $('.link-item-1').addClass('active-1');
      $('.link-item-2').addClass('active-2');
      $('.link-item-3').addClass('active-3');
      $('.link-item-4').addClass('active-4');
      $('.link-item-5').addClass('active-5');
  }, function (){
      $('.link-item-1').removeClass('active-1');
      $('.link-item-2').removeClass('active-2');
      $('.link-item-3').removeClass('active-3');
      $('.link-item-4').removeClass('active-4');
      $('.link-item-5').removeClass('active-5');
   }
 );
});
});

最佳答案

问题是因为 toggle() 方法不再以您期望的方式工作。它在几个版本前发生了变化。

但是,您可以通过使用 toggleClass() 来解决这个问题并大大简化您的代码:

$(".push-button").click(function () {
  $('.link-item-1').toggleClass('active-1');
  $('.link-item-2').toggleClass('active-2');
  $('.link-item-3').toggleClass('active-3');
  $('.link-item-4').toggleClass('active-4');
  $('.link-item-5').toggleClass('active-5');
});

我还建议您重新审视您在类方面使用的逻辑。它们应该对公共(public)元素进行分组,但是您为每个元素赋予了自己独特的类,这是完全相反的模式。

为了实现这一点,您可以在所有元素上使用相同的类,例如。 link-item,然后在需要时通过 JS 或 CSS 中的索引标识它们。

$(".push-button").click(function () {
  $('.link-item').toggleClass('active');
});

关于javascript - 切换类不适用于推送菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46132849/

相关文章:

javascript - 这是一个包含对象的 JavaScript 数组吗?

delphi - 如何在运行时向操作项添加下拉菜单

html - 菜单不水平显示

javascript - 如何在函数javascript中连接两个字符串变量?

javascript - 如何处理 React/Firebase 聊天应用程序中可见/不可见的聊天消息?

javascript - 如何在提交按钮点击时调用谷歌验证码

javascript - 如何根据文本值构建简单的 jQuery 字典字母过滤器?

jquery - 如何使用ajax发送动态数据

javascript - 如何在不使用 indexOf 的情况下匹配另一个字符串中的字符串?

html - 如何使用 CSS 制作支持悬停并尊重容器边缘的水平导航栏?