2012-04-03 17 views
0

IE8 + jQuery.css( 'top')関数に問題があります。jQuery.css( 'top')とIE8

1)高さ100px、幅600pxのDIVがあります。私はstyle = "top:50%"の最初のものの中に別のDIVを持っていますので、top = 50pxに配置してください。

2)すべてのブラウザで正しく表示されます。しかし、後で、私は要素の位置を見つけるためにjQueryを使用する必要がありますここにIE8の問題が来る:

$( '#txt')css( 'top')は私を返しません50pxしかし300px! !!!これは正しくありません。また、私はそれが常に親DIVの0.5 *幅の値を返すことに気づいた!!それは私を狂ってしまう!どうしたらいい?ここ

は、コード例です。ここで

<!DOCTYPE HTML> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>demo</title> 

    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> 
    <script type="text/javascript">    
     function onLoadTest(){ 
      alert("document.getElementById('txt').style.top="+document.getElementById('txt').style.top+"\n$(#txt).css('top')="+$('#txt').css('top')); 
     } 
    </script> 

</head> 
<body onload="onLoadTest()" style="padding: 0px; margin: 0px; width:100%; height:100%">    
    <div id="box" style="width:600px; height:100px; position:absolute; padding:0px; margin:0px; border: solid 1px"> 
     <div id="txt" style="top:50%; position:relative; padding:0px; margin:0px;border: solid 1px"> 
      im in the position top=50% (which is 50px), plz compare to alert box data 
     </div>   
    </div> 
</body> 
</html> 

答えて

0

は私fiddleです。 offset()を使って試してください。 IEは絶対に奇妙なことがあります。 あなたの親のボーダーとのオフセットは51ですので、私は親からボーダーを持ってきました

+0

それは働いています! :) ありがとうございました! :) – Stan