2012-02-14 6 views
0

私はjqueryでホバー機能を作っています。すべてのFireFoxとChromeで正常に動作し、問題はIEにあります。私はCSSの上/左を変更し、divを可視にするためにjquery.showを使います。初めてIE上に置かれても、間違った位置に表示されます。二回目は、それが... jquery/css jqueryでIEを表示するには

var x = (e.pageX - this.offsetLeft) - $(this).next("div").width(); 
var y = e.pageY - this.offsetTop; 



$(this).next("div").css({ display: 'block', 'position': 'fixed', zIndex: 2, left: x, top: y }); 

$(this).next("div").show("slow"); 

は再び、それはChromeとFirefoxのが、IEで素晴らしい作品..うまく示し

が、これはのdivのは、それを隠すために、デフォルトで持っているCSSです(私はIE9をテストしました) :あなたがxを計算する際のdivが完全にロードされていないため

display:none; 
position:fixed; 
z-index:2; 
+0

? – gdoron

+0

最初はcssクラス(表示:noneなど)として表示されますが、わかりません。私はちょうどこのようにしました。 IEが.cssとaddClassをとる方法には違いがありますか? –

+0

私のために働く:http://jsfiddle.net/gilly3/gup8u/。問題を示す[jsfiddle](http://jsfiddle.net/)を投稿できますか? – gilly3

答えて

0

あなたはこの問題に実行されています。 jQueryはdivの幅が何であるか分からず、したがって0を返します。次回はdivがロードされ、jQueryが幅を正しく取得します。

leftの代わりにrightを設定することでこれを修正できます。これは私の意見では、同様のアニメーションを向上させます。

次のdivにクラスを追加し、 `css`ファイルにそのクラスにCSSクラス定義を与えないのはなぜ

http://jsfiddle.net/gilly3/gup8u/22/

$('.linkin').hover(function(e) { 
    var x = document.documentElement.offsetWidth - e.pageX; 
    var y = e.pageY; 

    $(this).next("div").css({ 
     right: x, 
     top: y 
    }).stop(true, true).show("slow"); 
}, 
function() { 
    $(this).next().addClass('tooltip').stop(true, true).hide("slow"); 
}); 
+0

ありがとうございます、実際に動作するようです! IEは遅いですが、FFとChromeはうまくいっています。 –

+0

@QuincyJones - ChromeやFirefoxでは動作しませんでした。 ChromeはIEのように動作しました:http://imgur.com/G21wz Firefox *決してそれを得ていない、通常はdivはサムネイルの中央に配置されていたが、時には左にずれていたが、サムネイルの左に並ばない。それは私のためにFirefoxとIEでも同様に遅かった。 Chromeはほんの少し速かったです。 – gilly3

関連する問題