Привет, новый для 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]);
}
});
});
Вам нужно будет дождаться события загрузки 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());
});
Попробуй это:
function loadFrames(index)
{
if(index>=$("iframe").length)
return;
$("iframe").eq(index).attr('src', url[index]);
$("iframe").eq(index).load(){
loadFrames(index++);
}
}
$(function(){
loadFrames(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 );
});
$(this).ready() { $(this).attr('src', url[index]); }
с$(this).ready(function(){ $(this).attr('src', url[index]); });
увеличиватьindex
в каждом цикле