使用slideToggle添加/删除类

时间:2014-03-27 14:03:34

标签: javascript jquery html css

单击标题时,使用slideToggle向下/向上滑动菜单(ul / li)。作为标题的背景我有一个箭头指向下方如果菜单不可见,否则(我有两个类,'箭头向上'和'向下箭头'为背景)。

以下是我尝试过的但它不起作用。什么是好的解决方案?

$j('h3.sub-menu-dropdown-btn').click(function(){

    if ($j('ul').is(":visible")) {
        $j(this).removeClass('arrow-up');
        $j(this).addClass('arrow-down');
    } else {
        $j(this).removeClass('arrow-down');
        $j(this).addClass('arrow-up');
    }

    $j('.sub-menu-dropdown').slideToggle('fast');

});

3 个答案:

答案 0 :(得分:4)

您可以尝试一下,看看它是否符合您的需求:

$j('h3.sub-menu-dropdown-btn').click(function(){
    var $self = $j(this);
    $j('.sub-menu-dropdown').slideToggle('fast', function(){
        $self.toggleClass('arrow-up arrow-down');
    });
});

答案 1 :(得分:0)

尝试使用hasClass():https://api.jquery.com/hasClass/

$j('h3.sub-menu-dropdown-btn').click(function(){

    if ($j('ul').hasClass('arrow-up')) {
        $j(this).removeClass('arrow-up');
        $j(this).addClass('arrow-down');
    } else {
        $j(this).removeClass('arrow-down');
        $j(this).addClass('arrow-up');
    }

    $j('.sub-menu-dropdown').slideToggle('fast');

});

此外,如果没有看到html标记,我无法验证这一点,选择器$j('ul')可能过于笼统。

答案 2 :(得分:0)

你需要像这样使用:

if($j("ul").is(":visible")==true){