0

但是,我有以下正在运行的脚本;我希望每个数组项在循环继续之前显示几秒钟。这如何在 JQuery 中完成?

 <script>
 $(document).ready(function () {
     $("#x").click(function () {
         $.get('testfile.htm', function (data) {
             var i = 0;
             var mydata = [];

             $('#dc').html(data);

             $('#dc').find('div').each(function () {
                 mydata[i] = $(this).text()
                 i++;
             });

             for (id = 0; id < mydata.length; id++) {
                 $('#res').text(mydata[id]);
             }
         })
     });
 });
 </script>
4

3 回答 3

3

您可以使用fx队列,只需将所有文本更改排队,每次更改之间都有延迟。这也将允许您无缝使用动画,例如fadeOutfadeIn

jQuery方式:
$.each(mydata, function (i, val) {
    $('#res').queue(function (n) {
        $(this).text(val);
        n();
    }).delay(1000); //how many miliseconds between text changes
    //or with a simple fade in-out effect:
    //}).fadeIn().delay(1000).fadeOut();
});
原来的:
for (id = 0; id < mydata.length; id++) {
    $('#res').text(mydata[id]);
}
于 2013-08-27T21:06:10.320 回答
1

尝试这个:

for (var id = 0; id < mydata.length; id++) {
    (function (id) {
        setTimeout(function () {
            $('#res').text(mydata[id]);
        }, 3000 * id); // Change 3000 to the delay you want, in ms
    }(id));
}

本质上,每个setTimeout呼叫都会立即返回,因此您将每个延迟增加 3000 毫秒(左右),以便每个.text呼叫至少相隔 3000 毫秒。

于 2013-08-27T20:59:10.860 回答
0

使用 settimeout()

它不是您要求的 jQuery,但它完成了工作。下面是我为项目创建的一些代码示例。

setTimeout(function () {
            Scroller.Animate("down")
        }, 10000);

10000 是 10 秒。

所以你会想做类似的事情

        for(id = 0; id < mydata.length; id++)
        {
            setTimeout(function(){
                $('#res').text(mydata[id])
            }, 5000);
        }
于 2013-08-27T20:58:22.530 回答