2012-02-24 83 views
0

此jQuery代碼是簡單縮略圖庫的一部分。當我點擊頁面上的鏈接時,它被加載到fancybox中。當我添加預加載器部分時,一切看起來都不錯,但是我在螢火蟲中遇到錯誤:$(imgSwap).preload不是函數。jquery錯誤「不是函數」

我不知道我錯過了什麼,或者它是通過ajax加載到幻想?

<script type="text/javascript"> 
$(document).ready(function() { 
    // Image swap on hover 
    $("#gallery li img").hover(function(){ 
     $('#main-img').attr('src',$(this).attr('src')); 
    }); 
    // Image preload 
    var imgSwap = []; 
    $("#gallery li img").each(function(){ 
     imgUrl = this.src; 
     imgSwap.push(imgUrl); 
    }); 
    $(imgSwap).preload(); 
}); 
$.fn.preload = function() { 
    this.each(function(){ 
     $('<img/>')[0].src = this; 
    }); 
} 
</script> 


    <div id="gallery"> 
     <img src="http://photos2.img.ie/Full-10176257.jpeg" alt="" id="main-img" width="290px" height="200px"/> 
     <ul> 
      <li><img src="http://photos2.img.ie/Full-10176257.jpeg" alt="" width="69px" height="52" /></li> 
      <li><img src="http://photos2.img.ie/Full-10176258.jpeg" alt="" width="69px" height="52" /></li> 
      <li><img src="http://photos2.img.ie/Full-10176259.jpeg" alt="" width="69px" height="52" /></li> 
      <li><img src="http://photos2.img.ie/Full-10176260.jpeg" alt="" width="69px" height="52" /></li> 
      <li><img src="http://photos2.img.ie/Full-10176262.jpeg" alt="" width="69px" height="52" /></li> 
      <li><img src="http://photos2.img.ie/Full-10176256.jpeg" alt="" width="69px" height="52" /></li> 
     </ul> 
    </div>  
+2

嘗試在調用它之前聲明你的'preload()'方法*。 – Crontab 2012-02-24 17:00:59

+0

你不能從一個任意字符串數組中創建一個jQuery對象,或者至少你不應該創建一個jQuery對象。 – 2012-02-24 17:14:49

+0

嗨費利克斯我還在學習,所以我沒有最佳實踐。你能指點我的方式嗎?究竟是什麼,對我來說他們都是陣列,所以我錯過了一些重要的東西。謝謝。 – 2012-02-24 17:25:00

回答

1

也許你在聲明之前調用你的預加載函數,試着在你的代碼的頂部聲明該函數,然後調用預加載函數。

+0

謝謝,這是訣竅 – 2012-02-24 17:50:15

2

$(document).ready當DOM準備好時調用回調。或者,如果DOM已經準備就緒,它會立即調用它。在這種情況下顯然如此。

爲了安全起見,請在使用它們之前定義您的jQuery方法(此處爲$.fn.preload)。

+0

謝謝,回覆。我試着按照建議移動東西,但我不是100%確定你的意思。你能提供移動細節嗎?我在主頁面有一個$(document).ready,上面的代碼用ajax加載。 – 2012-02-24 17:20:52