2014-01-23 33 views
0

嘿即時通訊新的jQuery的,我希望我的頭銜是有意義的:P。我需要在這個循環中的停頓,直到數組中的上iframe是準備好之前,下一個獲得爲src。這裏是我的一些代碼,我認爲它相當接近但缺少一些東西。jQuery的暫停準備

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

你無法控制時,一個iFrame負載。這是不可能的。 – Alvaro

+0

替換此代碼塊'$(本)。就緒() { $(本).attr( 'src' 中,URL [指數]); }''與$(本)。就緒(函數(){$ (本).attr( 'src' 中,URL [指數]); }); '做每個循環中遞增'index' – dreamweiver

回答

0

你必須等待iframe的load事件,然後觸發下一次迭代的財產以後,你不能輕易做的每一個()循環中,所以使用循環的功能似乎更

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()); 
}); 

FIDDLE

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); 
}); 
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); 
    });