我有下面的脚本正在运行,但是;我希望每个数组项在循环继续之前显示几秒钟。如何在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>
答案 0 :(得分:3)
您可以使用fx
队列,只需queue更新所有文字更改,每次更改之间都有延迟。这样您还可以无缝使用fadeOut
和fadeIn
等动画。
$.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]);
}
答案 1 :(得分: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毫秒。
答案 2 :(得分: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);
}