javascript - Jquery Animate 高度切换

标签 javascript jquery widget

我正在使用 JQuery 来制作小部件效果,即最小化和最大化小部件。

但问题是,当我快速单击最小化按钮时,小部件崩溃了..

我认为问题在于它将动画中间高度作为切换时的新高度...

请帮忙...

$(document).ready(function () {
        $('.widget-minimize').click(function () {
            toggleMinimize($(this).parents('.widget').attr('id'));
        });

        $('.widget-close').click(function () {
            closeWidget($(this).parents('.widget').attr('id'));
        });
    });

    function toggleMinimize(widgetId) {
        var $content = $('#' + widgetId + ' .widget-content');
        if ($content.height()) {
            $content.data('oldheight', $content.height());
            $content.animate({height: 0});
            $('#' + widgetId).find('.widget-minimize').attr('src', 'http://dl.dropbox.com/u/638285/SO/images/icon-maximize.png').attr('alt', 'maximize');
        }
        else {
            $content.animate({height: $content.data('oldheight')});
            $('#' + widgetId).find('.widget-minimize').attr('src', 'http://dl.dropbox.com/u/638285/SO/images/icon-minimize.png').attr('alt', 'minimize');
        }
    }

    function closeWidget(widgetId) {
         $('#' + widgetId).animate({ "opacity": 0, "height": 0 }, 200, "swing");
    } 

Click here to see jsFiddle

最佳答案

如果您的内容当前正在动画化,只需从您的toggleMinimize函数返回,如下所示:

function toggleMinimize(widgetId) {
   var $content = $('#' + widgetId + ' .widget-content');
   if ($content.is(':animated')) {
       return;
   }

参见working fiddle

关于javascript - Jquery Animate 高度切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15999654/

相关文章:

widget - flutter 错误 : "Widget cannot build because is already in the process of building"

widget - 如何在 Flutter 中禁用默认的 Widget 飞溅效果?

javascript - 粒子js隐藏它下面的网页元素

javascript - jQuery 用户界面 : Save height and position of divs in cookie

javascript - 在选择某些东西之前隐藏 d3.chart 的详细信息

jquery - 选择 "grandchild"

javascript - 地理定位 API 不适用于 Vue.js

javascript - 确定鼠标悬停在元素上时是否有元素 "dragged"

JavaScript 时间跨度控制

javascript - Widget 的类变量和构造函数中初始化数组的区别?