理解和使用.each()的setInterval()时遇到麻烦

时间:2015-05-30 18:56:26

标签: jquery timer setinterval

我在这里要做的是:

我想要随时间逐渐显示的元素很少。所以,我尝试使用以下代码:

/*Defining an object with selectors*/
var ticks_obj = {
    1: "#Pros1",
    2: "#Pros2",
    3: "#Pros3"
};

/*Using setinterval within loop with 1 sec gap*/
jQuery.each(ticks_obj, function(index, val){
       setInterval(function(){
            jQuery(val).show(500);
       }, 1000);
});

麻烦是:

所有元素中都会立即发生{p> .show()。不是一个接一个。

所以,我改变了代码并做了:

/*Object Definition here*/

/*Using loop within setinterval*/
jQuery.setInterval(function(){
       jQuery.each(ticks_obj, function(index, val){    
           jQuery(val).show(500);
       });
 }, 1000);

这显示没有结果。

我无法理解。有人可以用几句话在子弹点上澄清它吗?

使用jQuery也是最简单的解决方案吗?

2 个答案:

答案 0 :(得分:3)

使用

jQuery.each(ticks_obj, function(index, val){
       setTimeout(function(){
            jQuery(val).show(500);
       }, index * 1000);
});

答案 1 :(得分:1)

当你做了

setInterval

它快速迭代元素真正,并且使用最后一个间隔的毫秒执行每个相应的间隔。这就是他们同时出现的原因。

您真的不需要duration,因为您可以像.show()一样传递duration,并在每次迭代时递增var duration = 1500; jQuery.each(ticks_obj, function(index, val){ jQuery(val).show(duration); duration += 1500; });

/**
 *
 * @constructor
 * @suppress {missingProperties}
 * @param {string} idOfTableContainer
 * @param {Array.<Object>} tableDataInJson
 */
function TableBuilder(idOfTableContainer, tableDataInJson) {
    "use strict";
    var idParser = new IdParser(idOfTableContainer, "row");

    /** @type {Array.<Object>} */
    var dataInJson = JSON.parse(JSON.stringify(tableDataInJson));
}

DEMO