2

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

这是我当前的代码:

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

非常感谢你的帮助!

4

3 回答 3

1

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

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

if( ! $( this ).hasClass( 'active' ) )
{
  // do stuff
}
于 2010-04-20T03:46:41.787 回答
1

围绕逻辑:

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

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

于 2010-04-20T03:45:02.953 回答
0

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

编辑因为我的描述很清楚:

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

if (! $('.mixesContent').find('.' + liId).hasClass("active_list"){
  //do the fade
}
于 2010-04-20T03:44:57.370 回答