javascript - For循环忽略延迟(300)

标签 javascript jquery for-loop

我有以下循环,应该为 formInputs 中的每个元素添加一个类,等待 300 毫秒,然后根据 flashCount 中定义的次数再次删除它。所以在本例中是 2 次。

但由于某种原因,delay(300) 不起作用,而且我的循环速度非常快,我什至看不到它的视觉效果。

我该如何解决这个问题?

for (var key in formInputs) {
    if (formInputs.hasOwnProperty(key) && !formInputs[key]["input"].val()) {
        var flashCount = 2;

        for (var i = 0; i < flashCount; i++) {
            formInputs[key]["input"].addClass("hovered").delay(300).removeClass("hovered");
        }
    }
}

最佳答案

问题是 jQuery 仅在其内部动画队列中使用delay。由于 addClassremoveClass 不是动画,因此您必须自己将它们添加到队列中。就像这样:

for (var key in formInputs) {
    if (formInputs.hasOwnProperty(key) && !formInputs[key]["input"].val()) {
        var flashCount = 2;

        for (var i = 0; i < flashCount; i++) {
            // Add the function to jQuery's animation queue instead of removing the class straight away
            formInputs[key]["input"].addClass("hovered").delay(300).queue(function(next){
                // Remove the `hovered` class when the queue gets to this
                $(this).removeClass("hovered");
                // Call the next item in the queue
                next();
            });
        }
    }
}

显然我无法测试这个,但应该可以。

关于javascript - For循环忽略延迟(300),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25612619/

相关文章:

javascript - 仅当输入值长度 < n 时,BOOTSTRAP 在输入元素上触发工具提示

javascript - 使用 javascript 添加 RadEditor :getting unterminated string literal error

jquery - 如何在 View 模型文件中定义的 View 文件中调用函数-jQuery

java - 对于循环困惑,为什么这个不循环?

node.js - nodejs fs.exists (fs.access) 在 for 循环中发生了奇怪的事情

javascript - 在书签的javascript中检测当前选择的输入字段

javascript - ExtJS 和按钮

javascript - Opera 中的 jQuery 追加

javascript - 带有 SNS 消息的 Javascript 中的 For 循环

java - 将 WebRTC 与 XMPP 服务器集成