禁用/取消绑定单击活动项目,在非活动状态时重新绑定单击

时间:2010-04-20 03:42:59

标签: jquery html css click unbind

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

这是我目前的代码:

    $('.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');
});

非常感谢你的帮助!

3 个答案:

答案 0 :(得分:1)

围绕逻辑:

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

比解除绑定和重新绑定更稳定。

答案 1 :(得分:1)

如果您检查$( this )是否已处于活动状态,如果没有,则继续执行该代码。

所以,在函数开始时,转到:

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

答案 2 :(得分:0)

如果我理解正确的话,我只会在淡入的div中添加一个“active”或者某个类,然后检查它是否已经具有该类,如果是,那么不要淡化它。

修改因为我的说明很清楚:

$('.mixesContent').find('.' + liId).addClass("active_list");

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