[英]Wait until image loads before performing function
我正在嘗試創建一個簡單的投資組合頁面。 我有一個拇指和圖像列表。 單擊拇指時,圖像將會改變。
單擊縮略圖時,我希望圖像淡出,等到圖像加載,然后淡入。我現在遇到的問題是有些圖像非常大,所以它會淡出,然后立即淡入,有時在圖像仍在加載時。
我想避免使用setTimeout,因為有時圖像的加載速度會比我設置的時間更快或更慢。
這是我的代碼:
$(function() {
$('img#image').attr("src", $('ul#thumbs li:first img').attr("src"));
$('ul#thumbs li img').click(function() {
$('img#image').fadeOut(700);
var src = $(this).attr("src");
$('img#image').attr("src", src);
$('img#image').fadeIn(700);
});
});
<img id="image" src="" alt="" />
<ul id="thumbs">
<li><img src="/images/thumb1.png" /></li>
<li><img src="/images/thumb2.png" /></li>
<li><img src="/images/thumb3.png" /></li>
</ul>
你可以這樣做:
$('img#image').attr("src", src).one('load',function() {
$(this).fadeIn(700);
}).each(function() {
if (this.complete) $(this).trigger('load');
});
如果圖像被緩存,在某些瀏覽器中.load()
將不會觸發,因此我們需要通過檢查.complete
並手動觸發加載來檢查和處理這種情況。 .one()
確保當時是否緩存或加載, load
處理程序僅觸發一次。
$(function() {
$('img#image').attr("src", $('ul#thumbs li:first img').attr("src"));
$('ul#thumbs li img').click(function() {
$('img#image').fadeOut(700);
var src = $(this).attr("src");
$('img#image')
.attr("src", src)
.load(function() {
$(this).fadeIn(700);
});
});
});
<img id="image" src="" alt="" />
<ul id="thumbs">
<li><img src="/images/thumb1.png" /></li>
<li><img src="/images/thumb2.png" /></li>
<li><img src="/images/thumb3.png" /></li>
</ul>
您需要對動畫進行排隊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.