Javascript $element.show()在IE中不工作?
我有一个小的Javascript $element.show()在IE中不工作?,javascript,jquery,internet-explorer,visibility,Javascript,Jquery,Internet Explorer,Visibility,我有一个小的div存储在$tip中,当用户点击某个链接时,我想在用户的点击位置显示它。 这就是我正在做的,它是一个插件的一部分,$This是一个动态创建的已知对象: $this.children('.menu').children('.details').bind('click', function(e){ $tip = $('#resizetip'); tiptext = "some text for my sweet little tip"; $tip.css('top',
div
存储在$tip
中,当用户点击某个链接时,我想在用户的点击位置显示它。
这就是我正在做的,它是一个插件的一部分,$This
是一个动态创建的已知对象:
$this.children('.menu').children('.details').bind('click', function(e){
$tip = $('#resizetip');
tiptext = "some text for my sweet little tip";
$tip.css('top',e.clientY);
$tip.css('left',e.clientX);
$tip.html(tiptext);
$tip.show();
});
提示显示在预期的位置,在Chrome和FF中很好,但我不知道为什么它在IE8甚至IE9中都不起作用。我尝试了console.log($tip.html())代码>并且它给出了预期的输出,所以我知道它在某个地方。我试着输出坐标,结果很好
然后我尝试了$('#resizetip').show()代码>显式地从控制台,它工作了!它出现了,正好在它应该在的地方。但是为什么它在代码中不起作用呢?我尝试添加另一行$tip.show()代码>以防万一,由于一些莫名其妙的原因,第一个不能被解雇,但这没有帮助
编辑
我对代码添加了一个编辑,以显示e
的来源,但我知道这不是问题所在,因为当我将e.clientX
输出到控制台时,输出很好。很可能您需要类似于:
if (!e){
var e = window.event
}
在函数的顶部附近<代码>e
可能未为IE定义,因此您需要恢复到。你可以读更多
设置一些单位,并使用pageX和pageY代替
$tip.css({
'top', e.pageY+ "px",
'left',e.pageX + "px"
);
这肯定是“e”不可用的问题。请访问此网站,了解有关此问题的跨浏览器解释:
基本上,您必须检查“e”是否存在,如果不存在,则将其分配给window.event:
功能剂量测定法(e){
如果(!e)var e=window.event;
....
}您在哪里停车?你能用一个JSFIDLE来重现这个问题吗?你能用更多的上下文和一个例子来发布代码吗?如果你只提供整数,jQuery会添加px
)