0

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.

});
4

2 に答える 2

2

これはChromeのバグかもしれないと思います。

まず、上記のようにコードを実行しました。あなたが説明したように、それは「0」を表示しました。

次に、上記のコードを試してみて、次のコードを使用して開発コンソールに幅(500)を表示することができました。

$('div.foot img').eq(0).attr('width');

だから、私はあなたが持っている元のコードを少し小さいものに書き直しました。これにより、期待どおりに「500」が表示されました。

$(document).ready(function(){
    $('div.foot').css('display','none');
    alert($('div.foot img').eq(0).attr('width'));
});

その後、元のコードを実行して「500」というアラートを出すことができました。

$(document).ready(function(){
    $('div.foot').css('display','none');
    var imageWidth = $('div.foot img').eq(0).attr('width');
    alert(imageWidth); // returns 0 in chrome.
});

簡単な答え:これは動作が不安定なため、バグであると確信しています。

注: jQuery1.4.4を使用してこれを試しました。

于 2011-02-14T17:18:23.963 に答える
1

inline親が非表示になっている場合(Chromeの場合)、画像は幅/高さとして表示され、幅/高さは表示されません。

画像をに設定するdisplay:block;と、Chromeで幅/高さが決まります。これを確認してください:http://jsfiddle.net/c4jdv/

于 2011-02-14T17:23:54.520 に答える