将延迟类添加到队列,但希望在进一步延迟后删除它

时间:2015-02-06 12:20:08

标签: jquery queue delay addclass removeclass

我不是Jquery专家,但是采用了一个模板,它现在可以工作,但是试图对其进行修改,以便任何添加的延迟类稍后会再次延迟消失。

此代码正确应用了动画'具有数据延迟ms延迟的类,但希望它删除动画'数据输出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');
    }
});

感谢任何帮助,因为我不在这里。

1 个答案:

答案 0 :(得分:0)

我认为我找到了一个解决方案..不确定dequeue()是什么,但似乎工作 - 这个类随后消失了 - 只是我不认为它在'outdelay'时间段内做到了.. < / p>

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');
    }
});