2012-03-30 31 views
2

我有一個縮略圖圖像列表,它們都具有'rel'屬性,它是更大尺寸的相同圖像的來源。我的功能很簡單,如果你點擊一個縮略圖,它的更大的尺寸會加載到一個容器中。我的代碼,我需要你的反饋,最有趣的部分是這樣的:請求圖片而不是AJAX的方法有多糟糕?

的變量:

「event.data.cImg」在這我想更新 容器「事件更大的圖像.data.cImgWrap」是更大的圖像 容器‘$(本)’是被點擊

event.data.cImg.attr('src', $(this).attr("rel")); 

    if (event.data.cImg.complete != 'true') { 

     event.data.cImgWrap.css('opacity', '0.7'); 

     event.data.cImg.load(function() { 
      event.data.cImgWrap.css('opacity', '1'); 
     }); 
    } 

那麼,什麼是我的代碼的缺點縮略圖?

對不起我的英語,我不是母語,並且提前致謝!

回答

1

我不想到你想使用ajax加載圖像的一個原因,除非圖像以base64編碼數據(而不是每個瀏覽器都支持數據url)直接存儲在數據庫中。 DOM已經擁有了「監視」圖像加載所需的一切,那麼使用ajax獲取圖像的意義何在?一個簡單的GET http請求就可以做到這一點。

您將使用ajax的唯一方法是通過web服務從圖像列表中提取圖像url和元數據等元數據... 如前所述,完整的事件不受支持。

+0

並且以比我的功能更好的方式使用GET? – skywlkr 2012-03-30 09:19:55

+1

你的函數已經在使用一個http GET請求。 – mpm 2012-03-30 09:22:31

+0

我明白了,我以爲你在談論jQuery.get()。 – skywlkr 2012-03-30 09:43:28

2

並非所有瀏覽器都支持圖像的complete屬性。

我會建議在更改src之前設置load處理程序和opacity。然後,更改src。如果圖像已經在緩存中,則load事件將立即觸發,並將不透明度設置回1。一切都很好,用戶不會看到不透明度的變化,因爲它發生的速度比屏幕更新更快。

相關問題