【问题标题】:Delay appending to element延迟附加到元素
【发布时间】:2014-02-16 12:08:54
【问题描述】:

我是 JavaScript 新手,我只是想知道是否可以延迟将元素附加到另一个元素。我有一张地图,我以锚标签的形式附加了点。页面加载后,将显示所有标记。我认为以短暂的延迟添加每个指针将是一个不错的功能。这是我目前的附加方式,

element = $("<a href='#' class='deskBtn tooltip fancybox' title='" + this.allData[i].Name + "' data-name='" + this.allData[i].UserName + "' data-department='" + this.allData[i].DepartmentName + "'></a>");

$(element).css({
    "top": this.allData[i].DeskYCoord,
        "left": this.allData[i].DeskXCoord
}).appendTo(".map");

我尝试在追加后公开 setInterval 方法,但是我无法这样做。任何帮助将不胜感激。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您应该使用超时,而不是间隔或使用延迟:

    $(element).css({
        "top": this.allData[i].DeskYCoord,
            "left": this.allData[i].DeskXCoord
    }).delay(2000).queue(function(next){
      $(this).appendTo(".map");
      next();
    });
    

    【讨论】:

    • @Wolff,感谢您的建议,但是否可以延迟加载每个文件。目前我正在使用 for 循环遍历数组,因此每次迭代都会添加一个指向地图的指针。是否可以映射一个指针,延迟一秒,然后加载下一个指针?
    • 你可以使用内部循环类似:for( var i=0;...;...) {/*code*/.delay((i+1)*1000)...}
    【解决方案2】:

    使用 jQuery 的 delay() 功能:

    element = $("<a href='#' class='deskBtn tooltip fancybox' title='" + this.allData[i].Name + "' data-name='" + this.allData[i].UserName + "' data-department='" + this.allData[i].DepartmentName + "'></a>");
    
      $(element).css({
                    "top": this.allData[i].DeskYCoord,
                    "left": this.allData[i].DeskXCoord
                })
    .delay ( 800, "my-queue" ).queue("my-queue", function (next) {
    $(this).appendTo(".map");
    next();
    

    });

    【讨论】:

    • 你需要将 appendTo() 方法放入队列
    • @A.Wolff thnx,你是对的.. 我们需要一个 que,所以我已经更新了代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 2019-10-23
    相关资源
    最近更新 更多