2015-03-31 77 views
0

我正在爲圖像編寫我自己的入門代碼,涉及獲取窗口大小並根據窗口大小用data-mediumdata-original替換img src。我還將其與路標包括在一起,以便在您滾動時淡入圖像中。圖像數據標籤沒有開啓加載/調整大小

我有一個jsFiddle設置>https://jsfiddle.net/qkguedu9/但我的問題是這個 - 無論窗口大小,它總是拉動data-medium圖像。從本質上講,我已經包括了JS,即使是這樣,它也不應該出錯。

var browser_width, 
    browser_height; 

// 
resizeHandler = function() { 
    browser_width = $(window).width(); 
    browser_height = $(window).height(); 
} 

// 
$.fn.loadImage = function() { 

    return this.each(function() { 

     if (browser_width > 768) { 
      var toLoad = $(this).data('original'); 
     } else { 
      var toLoad = $(this).data('medium'); 
     } 

     var $img = $(this); 

     $('<img />').attr('src', toLoad).imagesLoaded(function() { 
      $img.attr('src', toLoad).addClass('loaded').removeClass('loading'); 
     }); 

    }); 

}; 

// 
$(document).ready(function() { 

    resizeHandler(); 

    // 
    $('.lazy').each(function() { 
     var $img = $(this); 
     $img.waypoint(function() { 
      $img.loadImage(); 
     }, { offset: '125%' }); 
    }); 

}); 
+0

,我沒有看到一個問題。當窗戶較大時,我獲得了800x600,而較小的時候,獲得了400x300。這些圖像實際上並不是那些尺寸......但它似乎正確的圖像顯示,所以也許我誤解了 – holl 2015-03-31 20:49:39

+0

@holl在調整大小?請看下面。任何幫助? – 2015-03-31 21:51:53

回答

0

它看起來像一個緩存問題。不太清楚爲什麼會發生這種情況,這可能是某種競爭條件。如果您檢查if語句上的窗口寬度,它會正常工作。

$.fn.loadImage = function() { 

return this.each(function() { 

    if ($(window).width() > 768) { 
     var toLoad = $(this).data('original'); 
    } else { 
     var toLoad = $(this).data('medium'); 
    } 

    var $img = $(this); 

    $('<img />').attr('src', toLoad).imagesLoaded(function() { 
     $img.attr('src', toLoad).addClass('loaded').removeClass('loading'); 
    }); 

}); 

};

這是你的小提琴,現在的工作:

https://jsfiddle.net/qkguedu9/1/

+0

感謝您的幫助。我可以看到它似乎在全屏查看中工作,但它似乎仍不能調整大小? https://jsfiddle.net/qkguedu9/5/ – 2015-03-31 21:04:07

+0

哦,我認爲這可能是競賽狀況,但不確定? – 2015-03-31 21:05:31

+1

resizeHandler函數與當前擁有的一樣,可能不會計算loadImages檢查它的時間窗口寬度,從而導致if語句被評估爲「if undefined> 768」。這裏有一個調整大小的小工具:https://jsfiddle.net/qkguedu9/10/它不完美 - 你應該調節loadTheImages回調。我使用_.debounce這種事情,但我認爲jQuery有一個選擇。 – jakeh25 2015-04-01 01:00:47