【问题标题】:Disable/unbind click on active items, rebind click when inactive禁用/取消绑定点击活动项目,不活动时重新绑定点击
【发布时间】:2010-04-20 03:42:58
【问题描述】:

我有一个左侧导航,可以在右侧显示/隐藏内容。目前,当您单击一个链接时,它会淡入右侧的相应内容并为该链接添加一个活动类。我的问题是,如果您再次单击活动链接,右侧的内容会再次淡入。我想在链接处于活动状态时取消绑定该单击,如果您单击另一个导航链接(随后从上一个链接中删除该类并将其添加到当前链接),请将单击事件重新绑定到所有非活动链接。

这是我当前的代码:

    $('.mixesSidebar ul li').click( function() {
           //Get the attribute id
           var liId = $(this).attr('id');
           //removeClass active from all li's, addClass active to this
         $('.mixesSidebar ul li').removeClass('active');
         $(this).addClass('active');
           //Hide all content on the right
         $('.mixesContent ul').hide();
           //Find the content with the same class as the clicked li's ID, and fadeIn
         $('.mixesContent').find('.' + liId).fadeIn('slow');
});

非常感谢您的帮助!

【问题讨论】:

    标签: jquery html css click unbind


    【解决方案1】:

    如果您检查$( this ) 是否已激活,如果没有,则继续执行代码。

    所以,在函数的开始处,去:

    if( ! $( this ).hasClass( 'active' ) )
    {
      // do stuff
    }
    

    【讨论】:

      【解决方案2】:

      围绕逻辑:

      if (!$(this).hasClass('active')) {
        ...
      }
      

      比解除绑定和重新绑定稳定得多。

      【讨论】:

        【解决方案3】:

        如果我理解正确,我会在淡入的 div 中添加一个“活动”或其他类,然后检查它是否已经具有该类,如果有,请不要淡化它。

        编辑因为我的描述一清二楚:

        $('.mixesContent').find('.' + liId).addClass("active_list");
        
        if (! $('.mixesContent').find('.' + liId).hasClass("active_list"){
          //do the fade
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-20
          • 1970-01-01
          • 1970-01-01
          • 2015-10-31
          • 1970-01-01
          • 1970-01-01
          • 2017-01-30
          • 2018-02-13
          相关资源
          最近更新 更多