【问题标题】:Toggle class doesn't work with push menu切换类不适用于推送菜单
【发布时间】:2017-09-09 16:39:27
【问题描述】:

你能帮我告诉我为什么这段代码不起作用吗?单击“.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');
   }
 );
});
});

【问题讨论】:

  • 看起来您的代码中有多个 #push-menus ?

标签: javascript jquery menu navigation


【解决方案1】:

问题是因为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');
});

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

为了完成这项工作,您可以在所有元素上使用相同的类,例如。 link-item,然后在需要时通过 JS 或 CSS 中的索引来识别它们。

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

【讨论】:

  • 不错的答案。紧!
  • 我会试试那个 rn。它们具有不同的名称,因为它们必须以不同的方式显示,就像一个应该具有转换延迟:0.5s,其他 0.6s 等,这就是它们具有不同名称的原因。
  • 我敢肯定还有更好的方法可以做到这一点 - 但我建议为此提出一个新问题。
  • 现在它们可以工作了,但还是有一点问题,我没有反向动画。当我点击推送菜单时,它们从左到右显示,但是当我点击 X 关闭菜单时,它们只是淡出,我需要反向动画。
  • 这完全取决于你的 CSS 是如何设置的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 1970-01-01
  • 2017-07-02
  • 2014-09-23
  • 1970-01-01
  • 2019-12-06
相关资源
最近更新 更多