【问题标题】:Adding a delayed class to queue, but want to remove it after further delay将延迟的类添加到队列中,但希望在进一步延迟后将其删除
【发布时间】:2015-02-06 12:20:08
【问题描述】:

我不是 Jquery 专家,但采用了一个可以正常工作的模板,但尝试对其进行修改,以便任何添加的延迟类稍后消失,并进一步延迟。

此代码正确应用具有 data-indelay ms 延迟的“动画”类,但希望它稍后删除具有 data-outdelay ms 的“动画”类 - 尝试将队列链接在一​​起但不起作用 - 适用的基本代码如下所示的“动画”类。

    jQuery('.sr-animation').each(function() {
    if (jQuery(window).width() > 700) {
        var visible = jQuery(this).visible(true);
        var indelay = jQuery(this).attr("data-indelay");
        var outdelay = jQuery(this).attr("data-outdelay");
        if (!indelay) { indelay = 0; }
        if (!outdelay){ outdelay = 0; }
        if (jQuery(this).hasClass( "animated" )) {
        } else if (visible) {
            jQuery(this).delay(indelay).queue(function(){jQuery(this).addClass('animated')});
        }
    } else {
        jQuery(this).addClass('animated');
    }
});

感谢您的帮助,因为我在这里超出了我的深度。

【问题讨论】:

  • 找到了解决方案..不太确定 dequeue() 的作用,但似乎有效..

标签: jquery queue delay addclass removeclass


【解决方案1】:

我认为我找到了解决方案.. 不太确定 dequeue() 的作用,但似乎有效 - 课程随后消失了 - 只是我认为它不会在“延迟”时间段内完成......

jQuery('.sr-animation').each(function() {
    if (jQuery(window).width() > 700) {
        var visible = jQuery(this).visible(true);
        var indelay = jQuery(this).attr("data-indelay");
        var outdelay = jQuery(this).attr("data-outdelay");
        if (!indelay) { indelay = 0; }
        if (!outdelay){ outdelay = 0; }
        var duration = outdelay-indelay;
        if (jQuery(this).hasClass( "animated" )) {
        } else if (visible) {

            jQuery(this).delay(indelay).queue(function(){jQuery(this).addClass('animated').dequeue()});
            if(outdelay>0) { jQuery(this).delay(outdelay).queue(function(){jQuery(this).removeClass('animated')}); }
        }
    } else {
        jQuery(this).addClass('animated');
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-10
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    相关资源
    最近更新 更多