2014-01-19 68 views
1

我有一些代碼,基本上把圖像描述旁邊的未知高度的圖像。一些僞代碼在這裏:jquery設置高度等於圖像高度大約50%的時間工作

$(document).ready(function() { 
    $(".productdescription").css({'height':($(".productimage img").height()+'px')}); 
}); 

看到它在這裏的行動:http://jsfiddle.net/94xn5/

此代碼的工作就的jsfiddle但它我真正的代碼正確和有關重新大小有關的時間的1/2的股利1/2的時候,它調整到0px ....

我有麻煩調試爲什麼它有時和其他人不工作?

如果它有幫助 - 我在一個shopify預覽窗格中測試這個,也許這是以某種方式與我的JS搞砸了嗎?

謝謝!

PS - 如果有更簡單的方法來做我想用純CSS做的事情,請讓我知道!我沒有JS或CSS的經驗

編輯 - 這聽起來很奇怪,但如果我點擊CMD + R刷新頁面框保持0px樣式,但如果我點擊地址欄並按回車它正確大小箱子。不知道這意味着什麼,但有助於縮小它的工作時間和時間。

+0

等待如果你正在尋找一個純CSS的方式,你可能要考慮這個問題:http://stackoverflow.com/ a/13353120/1725764 –

回答

4

更改$(document).ready(...)事件到$(window).load(...)事件,它應該工作。

當JS「攻擊」時,你的圖片可能還沒有準備好(未完全加載)。

​​獲取所有資源後觸發事件。

+0

+1這是假設我的第二個選項 –

+0

這個工程!非常感謝 - 我認爲document.ready等待資源加載,但現在我明白了它的區別:)完美。非常感謝。 – tomcritchlow

+0

沒問題,如果您滿意,請接受答案。 – veritas

1

這是因爲圖像可能不會被加載,從圖像加載

$(document).ready(function() { 
    $(".productimage img").load(function() { 
     $(".productdescription").height(this.height) 
    }).filter(function() { 
     //if the image is already loaded trigger the event manually 
     return this.complete; 
    }).trigger('load'); 
}); 
相關問題