首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ToggleClass没有添加Jquery延迟吗?

ToggleClass没有添加Jquery延迟吗?
EN

Stack Overflow用户
提问于 2015-06-23 14:04:05
回答 3查看 299关注 0票数 1

我正在尝试增加一个延迟的切换“幻灯片”,但它似乎并没有增加。

这是我的小提琴

这是我的密码

代码语言:javascript
复制
 $(function () {
        $(".expand").on("click", function () {
            $(this).next().slideToggle();

                if ($(this).next().css("display", "block")) {



                    $(this).next().children('#slidinghold').delay(5000).toggleClass('slidein');


            }

            $expand = $(this).find(">:first-child");


            if ($expand.text() == "\u25B6") {
                $expand.text("\u25BC");


            } else {
                $expand.text("\u25B6");
            }
        });

    });
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-23 14:12:07

试试这个:

代码语言:javascript
复制
$(this).next().children('#slidinghold').delay(5000).queue(function(){
    $(this).toggleClass("slidein").dequeue();
});

小提琴

票数 3
EN

Stack Overflow用户

发布于 2015-06-23 14:11:59

使用setTimeout而不是延迟。样本:

代码语言:javascript
复制
$(".expand").on("click", function () {

    $(".expand").next().children('#slidinghold').removeClass('active-expand');

    $(this).next().children('#slidinghold').addClass('active-expand');

    setTimeout(function () {
        $('.active-expand').next().children('#slidinghold').toggleClass('slidein');
    }, 500);
});

演示https://jsfiddle.net/anthonypagaycarbon/v1geqa8e/

票数 2
EN

Stack Overflow用户

发布于 2015-06-23 14:12:21

正如jQuery的文档所说

.delay()不是JavaScript本机setTimeout函数的替代品,它可能更适合于某些用例

因此,您可以使用window.setTimeout来实现这一点:

代码语言:javascript
复制
$(function() {
    function toggleClassDelay(element,class,delay) {
        window.setTimeout(function() {
            element.toggleClass(class)
        },delay);
    }
    $(".expand").on("click", function() {
        var el;
        $(this).next().slideToggle();

        if ($(this).next().css("display", "block")) {
            el = $(this).next().children('#slidinghold');
            toggleClassDelay(el,"slidein",5000)
        }
        $expand = $(this).find(">:first-child");
        if ($expand.text() == "\u25B6") {
            $expand.text("\u25BC");
        } else {
            $expand.text("\u25B6");
        }
    });

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

https://stackoverflow.com/questions/31005003

复制
相关文章

相似问题

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