1
無限循環

我在我的網頁,這適用於所有的瀏覽器(甚至在IE9),但不能在IE7和IE8罰款下面的代碼:IMG負載進入在IE7和IE8

$.each($('.cic img'), function(index, value) { 
    $(this).load(function() { 
    // infinite loop here in IE7 and IE8 
    }); 
}); 

的HTML是:

  <div class="cic"> 
       <img wicket:id="image1" class="image1" /> 
      </div> 
          ... 
      <div class="cic"> 
       <img wicket:id="image2" class="image2" /> 
      </div> 

這樣做的原因是,在IE7和IE8的加載功能進入一個無限循環,我結束了一條消息:「此網頁沒有響應由於長時間運行腳本」。

編輯:將選擇器更改爲$('。cic img')。each()沒有幫助。我也確認loadImageCropper()不是問題的原因。我還在上面的腳本之前輸入了$('。cic img'),然後返回2,這是正確的。

上面的腳本和HTML正在加載AJAX。

我會感謝任何幫助! 提前謝謝!

+2

什麼是'loadImageCropper',它爲什麼在你的'each'循環中? – Blazemonger

+0

這是一個爲jQuery初始化imgAreaSelect插件的函數,用於匹配條件的每個圖像,但與循環無關。它不會導致它。 –

+0

你拿出來試試嗎?我想知道是否將初始'each'更新爲'$('。cic img')。each()'會解決它...不知道.each選擇器如何迭代,但是它可能正在重新選擇? – hunter

回答

0

script element,IE8和火災遺留readyStateChange事件相比,img src更新沒有標準加載事件,因此加載事件掩蓋事件未被識別的事實。解決方案是在事件綁定之前分離代碼:

function imageSwap() 
    { 
    var $img = $('.cic img'); 

    if(!!document.addEventListener) 
    { 
    $img.on("load", loadTest) 
    } 

    else 
    { 
    $img.get(0).attachEvent("onreadystatechange", loadTest); 
    } 

    function loadTest(event) 
    { 
    $img.show(); 
    } 
    }