jquery/css在IE浏览器的jQuery显示中更改css

问题描述:

我用jQuery制作了悬停功能。所有在FireFox和Chrome中运行良好,问题出在IE上。我更改CSS顶部/左侧,并使用jquery.show使div可见。虽然在IE中第一次将它悬停,但它显示的位置不对。第二次它显示就好了..jquery/css在IE浏览器的jQuery显示中更改css

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的伟大工程。(我只测试IE9)

这是CSS div的在默认情况下将其隐藏:

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

为什么不添加到下一格一类,并给予一个CSS类定义,该类在'css'文件? – gdoron 2012-02-14 19:24:32

+0

最初它有一个CSS类(显示为display:none等),但我不知道。我只是这样做了。在IE中使用.css和addClass的方式有什么不同吗? – 2012-02-14 19:27:21

+0

适合我:http://jsfiddle.net/gilly3/gup8u/。你可以发布一个[jsfiddle](http://jsfiddle.net/)来演示这个问题吗? – gilly3 2012-02-14 19:33:10

您正在运行到这个问题,因为当你计算x股利尚未完全加载。 jQuery不知道div的宽度是多少,因此返回0.下一次,当然div已经加载了,jQuery的宽度是正确的。

您可以通过设置right而不是left来更正此问题。这提高了动画为好,在我看来:

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做得很好 – 2012-02-14 22:34:24

+0

@QuincyJones - 它不适用于我的Chrome或Firefox。 Chrome的行为如IE:http://imgur.com/G21wz。 Firefox *永远不会*正确,通常div是以缩略图为中心的,有时候它会偏离左边,但从未排列在缩略图的左侧。对于我来说,Firefox和IE也同样缓慢。 Chrome只是更快一点。 – gilly3 2012-02-14 22:52:26