嘿,我是jQuery的新手,我希望我的头衔有道理:P。我需要在这个循环中暂停,直到数组中的前一个iframe准备就绪,然后才能获得src。这是我的一些代码,我认为它相当接近,但我错过了一些东西。
enter code here
var url = [
"http://www.stuff.co.nz/" ,
"http://www.metservice.com/marine-surf/tides/nelson"
];
$(function()
{
$("iframe").each(function(index)
{
if (index == 0)
{
$(this).attr('src', url[index]);
}
$(this).ready()
{
$(this).attr('src', url[index]);
}
});
});
答案 0 :(得分:0)
你必须等待iFrame的加载事件,然后触发下一次迭代,这是你在每个()循环中不能轻易做的事情,所以使用循环函数似乎更好
var url = [
"http://www.stuff.co.nz/",
"http://www.metservice.com/marine-surf/tides/nelson"
];
$(function () {
var iframes = $("iframe"),
i = 0,
l = iframes.length;
(function fn(elem) {
elem.load(function() {
if (i<l) {
fn( iframes.eq( elem.index(iframes) + 1 ) );
}
}).prop('src', url[i++]);
})(iframes.first());
});
答案 1 :(得分:0)
试试这段代码..
$(function() {
var totalFrames = $("iframe").length;
function setURL ( index ) {
$("iframe:eq("+index+")").attr('src', url[index]);
$("iframe:eq("+index+")").load(function () {
alert('iframe loaded');
if ( index < totalFrames ) {
setURL( index );
}
});
}
setURL ( 0 );
});
答案 2 :(得分:0)
试试这个:
function loadFrames(index)
{
if(index>=$("iframe").length)
return;
$("iframe").eq(index).attr('src', url[index]);
$("iframe").eq(index).load(){
loadFrames(index++);
}
}
$(function(){
loadFrames(0);
});