我試圖獲得使用下面的代碼元件寬度不確定的,但它會記錄不確定。但是,如果我直接在Chrome/Firebug控制檯中運行$('div.canvas img.photo').get(1).width
,它將返回正確的寬度。圖像沒有被加載Javascript,所以應該在文檔準備好時觸發。我究竟做錯了什麼?
3
A
回答
6
不,不應該。 document.ready在所有的HTML被加載時觸發,但不是圖像。如果您想等到所有圖像加載完畢,請使用window.load。
例子:
$(window).load(function(){
var diff = $('div.canvas img.photo').get(1).width;
console.log(diff);
});
而且,像有些人所指出的那樣,你試圖獲取財產「.WIDTH」兩次。
如果可能,請在CSS中設置圖片標籤的寬度。這樣,您可以安全地使用document.ready作爲代碼。使用window.load自然會延遲腳本的執行,可能是十秒,取決於客戶端連接的速度以及頁面上的內容量。如果您正在執行任何樣式,這可能會導致不必要的跳轉和抖動。
1
img未被加載到DOM就緒。 docs:
雖然JavaScript提供了當一個頁面渲染執行代碼的加載事件,不會被觸發此事件,直到如圖像的所有資產已被完全接收。在大多數情況下,腳本可以在DOM層次結構完全構建後立即運行。傳遞給.ready()的處理程序保證在DOM準備就緒後執行,因此這通常是附加所有其他事件處理程序並運行其他jQuery代碼的最佳位置。在使用依賴CSS樣式屬性值的腳本時,在引用腳本之前引用外部樣式表或嵌入樣式元素很重要。
改成這樣:
$(window).load(function(){
var diff = $('div.canvas img.photo').get(1).width;
console.log(diff.width);
});
0
的問題是,當你試圖獲取其dimentions您的圖像尚未加載。爲了使其工作包裝到$(window).load
。或者另一種選擇。如果您知道圖像的大小,您可以提供width
和height
屬性,那麼它甚至可以在DOMContentLoaded內部工作。有時候這是可取的,因爲onload事件需要更長時間才能觸發'DOMContentLoaded'。 否則您需要使用$(window).load
,請參閱@Andreas Carlbom的答案。
1
圖像的寬度只有在其完全加載後纔可用。 jQuery也支持每個圖像上的onload事件。
可以使用,
$('div.canvas img.photo').load(function(){
// here the image (or all images which match selector) has been loaded.
}
相關問題
- 1. git「<<<<<<< HEAD」
- 2. 「<<<<<<< HEAD」模板
- 3. <script></script> or <script />?
- 4. Heredoc <<<或<<?
- 5. operator <<:std :: cout << i <<(i << 1);
- 6. << <<超載
- 7. github增加<<<<<<< HEAD
- 8. 什麼是<script type =「text/javascript」><!--mce:0--></script>?
- 9. 浮動元素<br /><br /><br /><br /><br /\><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
- 10. PHP使用$ var = <<< EOM
- 11. 使用>>,>,> |,||,| <,<,<<,<<
- 12. 'std :: operator <<'operator <<'不匹配'std :: operator <<
- 13. std :: cout << x;和std :: cout << x << std :: endl;?
- 14. <script>或<noscript>?
- 15. 我可以把<script></script>裏面<script></script>
- 16. 怎麼了SVN把「<<<<<<<.mine」遍佈整個地方?
- 17. 的Rails搞亂我的代碼以「<<<<<<< HEAD」
- 18. 什麼意思的符號在java中「<<<」「<< =」「<<」
- 19. 什麼是我的檔案中的「<<<<<<< head」?
- 20. <script/> vs <script></script>與webpack和角
- 21. THREE.Camera.prototype.lookAt</ <() -</ <是什麼意思?
- 22. <%$,<%@,<%=,<%#...這是怎麼回事?
- 23. 使<b></b><i></i><u>在文本框</u>和<br>
- 24. <picture><source>相對於寬度<picture>
- 25. 是VAR | = 1 << 2; reverisble?
- 26. PHP:<<< VS ob_start
- 27. < - ,[[< - ,$ < - 和:=與環境
- 28. PHP操作<<<
- 29. PHP表達<<< EOB
- 30. HTML標記:<<< HTML
添加'的console.log(差異);'兩線之間,則將會看到what's錯誤。 – Stefan 2012-01-31 10:31:18
@Mild Fuzz:'console.log(diff.width);'//看起來錯字 – Dev 2012-01-31 10:31:51
Ooops,現在編輯。 – 2012-01-31 10:39:27