这种 Chrome 特有的行为是奇怪的还是正确的结果?
发现一个涉及 jquery 和 chrome 的奇怪现象。如果周围 div 的显示设置为“none”,img 元素的 attr('width') 似乎会返回 0。不过,这在 Firefox 和 Opera 中效果很好。
那么,这是一个错误还是 chrome 断言了正确的 jquery 行为?
这是一个例子:
<html>
<head>
<script type="text/javascript" src="../jquery-1.4.min.js"></script>
<script type="text/javascript" src="return.js"></script>
</head>
<body>
<div class="foot">
<img src="images/ref.png" width="500px" height="500px" />
<img src="images/ref1.png" width="300px" height="300px" />
</div>
</body>
</html>
$(document).ready(function(){
$('div.foot').css('display','none');
var imageWidth = $('div.foot img').eq(0).attr('width');
alert(imageWidth); // returns 0 in chrome.
});
Found an oddity involving jquery and chrome. Seems attr('width') for an img element returns 0 if the display of the surrounding div is set to "none". This works fine in firefox and opera though.
So, is this a bug or is chrome asserting the correct jquery behaviour?
Here's an example:
<html>
<head>
<script type="text/javascript" src="../jquery-1.4.min.js"></script>
<script type="text/javascript" src="return.js"></script>
</head>
<body>
<div class="foot">
<img src="images/ref.png" width="500px" height="500px" />
<img src="images/ref1.png" width="300px" height="300px" />
</div>
</body>
</html>
$(document).ready(function(){
$('div.foot').css('display','none');
var imageWidth = $('div.foot img').eq(0).attr('width');
alert(imageWidth); // returns 0 in chrome.
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为这可能是 Chrome 的一个错误。
首先,我按照上面的方式运行了您的代码。正如您所描述的,它显示“0”。
然后,我尝试了上面的代码,并且能够使用以下代码在开发控制台中显示宽度(500):
因此,我将原始代码重写为稍微更小的代码。这按预期显示“500”:
之后,我能够运行您的原始代码并让它发出警报“500”。
简短的回答:我很确定这是一个错误,因为它的行为不稳定。
注意:我使用 jQuery 1.4.4 尝试过此操作。
I think this may be a Chrome bug.
First, I ran your code as above. It displayed "0" as you described.
Then, I played around with the above code, and was able to have the width (500) display in the dev console with the following code:
So, I re-wrote the original code you have to something slightly smaller. This displayed "500" as expected:
After that, I was able to run your original code and have it alert "500".
Short answer: I'm pretty sure this is a bug because of its erratic behaviour.
Note: I tried this using jQuery 1.4.4.
图像显示为
内联
,并且当父级隐藏时(在 Chrome 中)不会给出宽度/高度。将您的图像设置为
display:block;
,Chrome 将为您提供宽度/高度。检查这个:http://jsfiddle.net/c4jdv/Images are displayed as
inline
and doesnt give width/height when parent is hidden (in Chrome).Set your images to
display:block;
and Chrome will you your width/height. Check this: http://jsfiddle.net/c4jdv/