首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在手风琴效果中添加一个关闭按钮

在手风琴效果中添加一个关闭按钮
EN

Stack Overflow用户
提问于 2014-04-09 10:04:31
回答 2查看 431关注 0票数 0

我有一个jQuery的问题,我不能把我的头。基本上,我有一个横向的时间表,显示公司的许多事件。这些活动的设置具有手风琴效果,效果很好。我正试图添加一个关闭按钮到每个手风琴面板,并在目前被困在一个循环。

如果单击面板,代码将检查是否附加了一个名为"active“的类。如果没有,则添加它并展开面板。我已经添加了我的密切链接,并说要删除“活动”类,它可以工作,但一旦它意识到它不再有类,它重新添加它。因此,我被困在这个循环中,无法摆脱:)

任何帮助都会很好!

在这里可以看到对这个问题的操纵:http://jsfiddle.net/damienoneill2001/DdALd/8/

当您通过不同的面板单击,您可以看到他们的工作。在第二个面板上设置一个关闭按钮,并在单击任何面板后变得可见。如果单击“关闭”按钮,然后再次单击同一面板,则可以看到它在循环中被捕获。

另外,如果您打开一个面板,再次单击同一个面板关闭,然后尝试再次打开它,它会被捕获在同一个循环中。

jQuery代码:

代码语言:javascript
复制
$(document).ready(function()
 {
    activePanel = $("#accordion .panel:first");
    $(activePanel).addClass('active');
    $(".panel").click(function(){

if($(this).not('.active') )
{
    $(this).animate({width: "400px"}, 300);
    $(this).addClass('active');
    $(activePanel).animate({width: "60px"}, 300);
    activePanel = this;
    $('.close').css({display: "block"});

    }

}); 
$(".close").click(function(){
     $('.close').css({display: "none"});
     $('.panel').removeClass('active');
    });

});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-09 10:11:52

使用hasClass

代码语言:javascript
复制
if(!$(this).hasClass('.active') )
{
    $(this).animate({width: "400px"}, 300);
    $(this).addClass('active');
    $(activePanel).animate({width: "60px"}, 300);
    activePanel = this;
    $('.close').css({display: "block"});

}

编辑

我更新了你在小提琴里提供的代码

代码语言:javascript
复制
$(document).ready(function () {
    activePanel = $("#accordion div.panel:first");
    $(activePanel).addClass('active');
    $(".panel").click(function () {
        if ($(this).not('.active')) {
            $(".active").animate({
                width: "60px"
            }, 300);
            if ($(this).css("width") == "400px") {
                $(this).animate({
                    width: "60px"
                }, 300);
                $('.close').hide();
            } else {
                $(this).animate({
                    width: "400px"
                }, 300);
                $('.close').show();
            }
            $(this).addClass("active");
        }

    });
    $(".close").click(function (e) {
        e.stopPropagation();
        $(this).hide();
        $(".active").animate({
            width: "60px"
        }, 300);

    });

});

Demo

票数 1
EN

Stack Overflow用户

发布于 2014-04-09 10:08:33

not更改为is

代码语言:javascript
复制
if(!$(this).is('.active') )
{
    $(this).animate({width: "400px"}, 300);
    $(this).addClass('active');
    $(activePanel).animate({width: "60px"}, 300);
    activePanel = this;
    $('.close').css({display: "block"});

    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22959184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档