【问题标题】:jquery toggle() triggers unwanted animationjquery toggle() 触发不需要的动画
【发布时间】:2016-09-09 11:13:33
【问题描述】:

我有这个简单的功能:

$('.tools-dropdown-launch').click(function(e) {
    e.preventDefault();
    $('.tools-dropdown-content').toggle(function () {
        fixPanelHeight();
    });
});

应该切换另一个 div 的可见性,但 没有动画。相反,我有一个类似的 slideToggle() 类型的动画。触发的函数如下:

function fixPanelHeight() {
    var maxPanelHeight = 0;
    $(".inner-menu-panel-containter").children(".menu-panel").each(function(){
        var element = $(this);
        element.css("height", "auto");
        if (element.height() > maxPanelHeight) {
            maxPanelHeight = element.height();
        }
    })
    if (maxPanelHeight > 0) {
        $(".inner-menu-panel-containter").children(".menu-panel").height(maxPanelHeight);
    }
}

我尝试将第一个函数更改为

$('.tools-dropdown-launch').click(function(e) {
    e.preventDefault();
    $('.tools-dropdown-content').toggle();
});

它按预期工作:我没有动画但该功能(当然)没有触发。

为什么会这样?

css 中没有高度过渡,js 文件中的任何地方都没有slideToggle()

这个问题解决了

$('.tools-dropdown-content').slideToggle(0 , function () {
        fixPanelHeight();
    });

但我更喜欢比这个 quickfix 更好的东西。

【问题讨论】:

  • 将完整的回调函数传递给 jq toggle() 方法使用默认持续时间(400 毫秒)隐式调用动画。现在,尚不清楚您的预期行为是什么?只使用toggle() 有什么问题?
  • 我希望没有动画,因为我在函数中使用了 toggle() 而不是 slideToggle()。有没有办法避免这种情况.. 我需要切换显示:无/没有特殊效果、过渡或动画的块
  • 但我仍然不确定你为什么不能只使用.toggle()?它不会使用任何动画。因为它是同步的,所以你可以使用:$('.tools-dropdown-content').toggle(); fixPanelHeight();
  • 不会toggle(0, function(){}) 工作还是我错过了什么?
  • @A.Wolff i am using toggle() :) 这就是为什么它的动画让我感到惊讶

标签: jquery jquery-animate toggle slidetoggle


【解决方案1】:
 $("#show_advance").click(function () {
            //  $(".ad_search").slideToggle("slow");
            if ($(".ad_search").is(':hidden')) {
                $('.advance_search').text('hide Advance Search');
                $(".ad_search").slideToggle("slow");
            }
            else {
                $('.advance_search').text('Show Advance Search');
                $(".ad_search").slideToggle("slow");
            }
        });

使用这可能对您有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多