点击任何其他链接时关闭toggleClass?

时间:2012-11-21 11:55:29

标签: jquery toggle toggleclass

我有这个切换滑动打开菜单并添加一个活动类让你知道它是开放的,我已经拼凑了这个并且有一个小故障..

$(".parents-toggle > a").click(function () {
          $(this).toggleClass('active');
         $(".parents-toggle > ul.sub-menu").not($(this).siblings()).slideUp();
         $(this).siblings(".sub-menu").slideToggle();
      });

      $(".parents-toggle-inner > a").click(function () {
      $(this).toggleClass('active');
         $(".parents-toggle-inner > ul.sub-menu").not($(this).siblings()).slideUp();
         $(this).siblings(".sub-menu").slideToggle();
      });​

如果您同时点击任何其他按钮,它仍保持活动状态,因此除非您关闭它,否则保持活动状态....

如果单击页面上的任何其他链接,是否可以删除活动类?所以,即使有另一个切换菜单与这个菜单分开,所以理想情况下任何链接......?

http://jsfiddle.net/24k5U/2/

你可以看到你得到了大量的橙色/活动按钮

任何帮助都会很棒。

2 个答案:

答案 0 :(得分:1)

在点击事件中添加$('.active').removeClass('active');。那应该解决它。

这样,您现在的代码变为:

$(".parents-toggle > a").click(function () {
    $('.active').removeClass('active');  // <---- This line added
    $(this).toggleClass('active');
    $(".parents-toggle > ul.sub-menu").not($(this).siblings()).slideUp();
    $(this).siblings(".sub-menu").slideToggle();
});

基本上,您所做的是确保在class=active点击的链接之前没有与toggleClass()的链接。

您可以对内部或子链接执行相同的操作。

答案 1 :(得分:0)

在将类应用于任何其他元素之前,从同一级别删除该类:

  $(".parents-toggle > a").click(function () {
      $(".parents-toggle > a").removeClass('active');
      $(this).toggleClass('active');
      $(".parents-toggle > ul.sub-menu").not($(this).siblings()).slideUp();
      $(this).siblings(".sub-menu").slideToggle();
  });