我有一个左侧导航,显示/隐藏右侧的内容。目前,当您单击链接时,它会淡化右侧的相应内容,并向该链接添加活动类。我的问题是,如果再次单击活动链接,右侧的内容将继续淡入。我想在链接处于活动状态时解除绑定,如果您单击另一个导航链接(随后从上一个链接中删除该类并将其添加到当前链接),请将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');
});
非常感谢你的帮助!
答案 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
}