【问题标题】:Add Class and Perform Animation on Click, Reverse on Click Again添加类并在单击时执行动画,再次单击时反转
【发布时间】:2012-12-05 14:23:58
【问题描述】:

我有一个最初隐藏的 wrap 元素。单击隐藏元素后,需要添加一个可见类,然后才能在另一个元素上执行切换动画。然后再次单击,动画元素需要切换它的动画,然后从包装中删除所述类。

这是我到目前为止所拥有的。初始点击执行良好。添加类,并执行动画。但是再次点击动画会正常执行,但是一旦完成,类就不会被删除。

$(document).ready(function () { 
$('.search-btn').click(function() {
    if ($('.search-form-wrap').hasClass('hidden')) {
        $('.search-form-wrap').addClass('visible', function() {
            $('.search-form').blindLeftToggle('slow'); 
        });
    }
    else {
        $('.search-form').blindLeftToggle('slow', function() {
            $('.search-form-wrap').removeClass('visible'); 
        });
    }
});
});

这似乎基于 Blazemonger 的代码,加上 $('.search-form-wrap').hide();

$(document).ready(function () { 
$('.search-form-wrap').hide();
$('.search-btn').click(function() {
    if ($('.search-form-wrap').is(':hidden')) {
        $('.search-btn').toggleClass('active'); 
        $('.search-form-wrap').show();
        $('.search-form').blindLeftToggle('slow'); 
    } else {
        $('.search-form').blindLeftToggle('slow', function() {
            $('.search-form-wrap').hide();
        });
    }
});
});

【问题讨论】:

    标签: jquery-animate toggle removeclass


    【解决方案1】:

    那是因为您正在测试它是否为.hasClass('hidden')。如果您要添加/删除 visible 类,则需要测试它是否为 .not('.visible')

    更新

    但是,如果您的意思是要在不使用类的情况下测试元素是隐藏还是可见,请使用 :hidden:visible 选择器而不是类:

    $(document).ready(function () { 
        $('.search-btn').click(function() {
            if ($('.search-form-wrap').is(':hidden')) {
                $('.search-form-wrap').show();
                $('.search-form').blindLeftToggle('slow'); 
            } else {
                $('.search-form').blindLeftToggle('slow', function() {
                    $('.search-form-wrap').hide();
                });
            }
        });
    });
    

    【讨论】:

    • 通过将 if ($('.search-form-wrap').hasClass('hidden')) 更改为 if ($('.search-form-wrap').not(':可见')),它仍然可以正常工作。
    • 他们不是一回事!我建议.not('.visible'),而不是.not(':visible')。一个测试一个类,另一个测试可见性。添加类hidden或删除类visible与测试元素是:visible还是:hidden完全不同。
    • 我认为它是:可见的,我的错误
    • 这行得通,一旦动画完成就接受 display: none 属性被添加到 search-form-wrap 元素。
    • 然后返回添加或删除类。我不再清楚你真正想要使用哪种方法。
    猜你喜欢
    • 2015-11-10
    • 2019-10-20
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多