javascript - 延迟 jQuery toggleClass 效果直到幻灯片动画完成

标签 javascript jquery html css animation

我在使用 jQuery delay() 函数时遇到了一些问题。 我目前正在使用它来尝试强制执行 toggleClass 操作,直到 slideUp 动画在我的一个 div 上完成,但它似乎不起作用。

我的风格旨在拥有一个带圆 Angular 的栏,当单击时展开以显示更多内容,底部的栏的圆 Angular 变成方形,看起来栏实际上已经展开以显示内容。这很好,但是它可以工作,当我折叠展开时,在折叠动画完成后,栏需要回到底部的圆 Angular 。目前它似乎在此动画完成之前触发。

我在网上某处读到 jQuery 的“慢”转换速度为 600 毫秒,我将延迟设置为 800 以确保它不碍事,但这实际上并没有做任何事情。

有什么建议吗?下面的代码和 fiddle :

$(function() {
        $('span.history_record_toggle').click(function () {
            if($(this).hasClass('collapsed')){
                $(this).text('Show +');
                $(this).toggleClass('collapsed');
                $(this)
                    .closest('.history_record_container')
                    .find('.history_record_body')
                    .slideUp('slow',function() {
                });
                $(this)
                    .parent()
                    .toggleClass('squared_bottom');
            }else{
                $(this).text('Hide -');
                $(this).toggleClass('collapsed');
                $(this)
                    .closest('.history_record_container')
                    .find('.history_record_body')
                    .slideDown('slow',function() {
                });
                $(this)
                    .parent()
                    .delay(800)
                    .toggleClass('squared_bottom');
            };                                      
        });
     });

http://jsfiddle.net/jezzipin/KFeHd/6/

最佳答案

jQuery 动画和效果具有回调函数,可以实现完成后发生的事情。

例如

var thisParent = $(this).parent();
$(this).closest('.history_record_container').find('.history_record_body').slideDown('slow',function() {
  $(thisParent).toggleClass('squared_bottom');
});

关于javascript - 延迟 jQuery toggleClass 效果直到幻灯片动画完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18613107/

相关文章:

javascript - 如何在阿拉伯语中使用 Javascript 自动完成功能?

javascript - 如何设置 socket.io 来源以限制连接到一个 url

javascript - initEvent+dispatchEvent 和 jquery 的 trigger ('click' 有区别吗)

jquery - 滚动经过初始屏幕后显示 Bootstrap 导航栏

javascript - onclick 将多个 div 作为图像保存到一个 zip 文件中

javascript - 如何在html字符串中添加一些东西

javascript - 输入类型为 ="image"的 onClick

javascript - 为什么 'let' 可以在 Chrome 的 devtools 控制台中重新声明? (其他浏览器不允许。)

javascript - 如何后处理我的 html 以折叠大表?

html - Bootstrap 4.1.3,下拉菜单不起作用