我试图获得使用下面的代码元件宽度不确定的,但它会记录不确定。但是,如果我直接在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