8

一个简单的,但我无法弄清楚。我有一个名为#title 的链接,当您单击它时,它会切换名为#content 的div。这非常有效,但此外,我还在我的#title 链接中添加了“活动”类,即使使用 removeClass,我也无法摆脱它。

请参阅上面的代码和示例链接(仅当 #content 展开时,标题才应为红色,而不是一直)。

$('#title').click(function() {
    $(this).addClass('active');
    $('#content').toggle();
}), function() { 
    $(this).removeClass('active');
};

http://jsfiddle.net/vY3WY/

4

5 回答 5

24

您可以将 toggleClass 函数与切换一起使用。

http://jsfiddle.net/vY3WY/1/

$('#title').click(function() {
    $(this).toggleClass('active');
    $('#content').toggle();
});

或者您可以使用更健壮的版本,以确保在内容可见时添加类,否则将其删除。

http://jsfiddle.net/vY3WY/6/

$('#title').click(function() {
    $('#content').toggle();
    if ($('#content:visible').size() != 0)
    {
         $(this).addClass('active');   
    }
    else
    {
         $(this).removeClass('active');   
    }
});
于 2011-04-07T17:57:48.093 回答
7

这个版本有效

$('#title').click(function() {
    if($(this).hasClass('active')) {
        $(this).removeClass('active');
    } else {
        $(this).addClass('active');
    }
    $('#content').toggle();
});

检查是否存在“活动”使用hasClass,如果存在则将其删除。如果不是,请添加它。

或者你可以toggleClass用来隐藏所有这些逻辑。

于 2011-04-07T17:57:38.433 回答
5

一个紧凑且仍然可读(我猜)的解决方案:

$('#title').click(function() {
    var isContentVisible=$('#content').toggle().is(':visible');
    $(this).toggleClass('active', isContentVisible);
});

现场演示

之后它会切换#content并检查它是否可见。然后它#title根据结果切换类。也可以是一个单行函数,但它不能满足我当时的可读性期望。

于 2011-04-07T18:18:44.883 回答
0

我认为这是最合适的方式。

$(this).toggleClass('active').siblings().removeClass('active');

于 2017-11-16T17:16:24.203 回答
0

用其他值隐藏当前值的另一种解决方案

$('.my').click(function() {
if($(this).hasClass('active')) {
    $(this).removeClass('active');
} else {
    $(this).addClass('active');
}
$('.my').toggle();

});

点击这里!这也适用于参考链接

于 2015-09-11T06:45:44.573 回答