我使用jquery load()来加载一些文件。
每次在此load()函数中调用myfuc()
时,我需要有1秒的间隙。
这就是我所做的。目前它不会每1秒拨打myfuc()
,它会同时拨打myfuc()
9次。
我的要求是在每个html文件满载时调用myfuc()
。
要么
以1秒的间隔致电myfuc()
for(i = 1; i < 10; i++){
$('#wrapper' + i ).load('some'+i+'.html', function(index) {
setTimeout(function() {
myfuc();
}, 1000 * (index + 1));
});
}
答案 0 :(得分:0)
setInterval(myFunc,1000);
试试这个!
答案 1 :(得分:0)
// Select all images and for each
$('[id^="wrapper"]').each(function(idx) {
// ... register listening on load event...
var i = idx + 1;
$(this).load('some'+i+'.html', function() {
// ...and if particular image is loaded, start timer...
setTimeout(function() {
// ...which fires this func
myfuc();
}, 1000 * i);
});
});
如果您明确需要从标签ID
读取var i
function myFunc(i) {
console.log("Image with id wrapper"+i+" loaded");
}
$('[id^="wrapper"]').each( function() {
var i = parseInt($(this).prop("id").substring(7),10) ;
$(this).load('some'+i+'.html', function() {
setTimeout(function() {
myFunc(i);
}, 1000 * i);
});
});
&#13;
<img src="http://placehold.it/100/60?text=Image 1" id="wrapper1">
<img src="http://placehold.it/100/60?text=Image 2" id="wrapper2">
<img src="http://placehold.it/100/60?text=Image 3" id="wrapper3">
<img src="http://placehold.it/100/60?text=Image 4" id="wrapper4">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 2 :(得分:-1)
它可能是一个范围问题 - 每次设置超时都是相同的。
您可以尝试使用let变量
来解决它 for(let i = 1; i < 10; i++){
$('#wrapper' + i ).load('some'+i+'.html', function(i) {
setTimeout(function() {
myfuc();
}, 1000 * (i+ 1));
});
}
或与IIFE
for(var i = 1; i < 10; i++){
(function (index) {
$('#wrapper' + index).load('some'+index+'.html', function(index) {
setTimeout(function() {
myfuc();
}, 1000 * (index+ 1));
});
})(i);
}