2013-03-06 93 views
0

我是网页开发的新手。IE8上的JavaScript/Jquery点击事件无法正常工作

我在我的项目的按钮上有一些问题。 这行代码是工作在所有Web浏览器,除了IE8:

$("#SampleBtn").live("click", function(){ 
    console.log('It works!'); 
}); 

它不作出反应的方式点击时是应该的。在这个例子中,它应该打印出“It works!”,显然没有任何反应。但是,如果用户点击按钮而不放开(keydown)超过1秒钟,它就可以工作。

我不太确定问题是从哪里来的。它是否与.live或click事件有关?

任何帮助将不胜感激。谢谢!

+1

“活”方法在1.7中被弃用,**在1.9中被删除**。你使用什么版本?另一种方法是使用'on'。 – elclanrs 2013-03-06 23:50:15

+2

你使用的是什么版本的jQuery?在控制台中查找'$ .fn.jquery'。同样在IE浏览器中,控制台对象在开发者控制台打开之前不存在。如果您在此之前尝试访问控制台,您将收到错误消息。 – 2013-03-06 23:51:27

+0

我正在使用1.8.2。我尝试'开',但现在,它甚至不能在Chrome中工作 – Kimpoy 2013-03-06 23:55:56

回答

0

我们发现,本地,当应用程序在我们的node.js服务器运行时,有一个与按钮没有问题,但是,这也正是问题的发生。 这是造成IE8上的错误:

filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='image.png',sizingMethod='scale'); 

看来,预加载导致在自定义按钮图像的响应延迟。也许,图像被提取需要时间。 不管怎么说,我们能够通过改变来解决这个问题:

background-image: url('images.png'); 

但是感谢大家抽出时间在此分享你的想法。 :)

1

IE8有不少问题,但这应该肯定有效。我最好的猜测是console.log调用失败(因为我在评论中提到的原因)。

尝试将console.log更改为alert并查看它是否有效。

也可以尝试使用delgated version of on

$(document).on('click', '#SampleBtn', function(){ 
    console.log('It works!'); 
}); 
+0

console.log没有任何问题。无论如何,我要使用您的答案在我们的服务器上更新我们的应用程序。希望它有效 – Kimpoy 2013-03-07 00:27:19

+0

如果在创建绑定后将按钮添加到DOM,则只需要委托表单。如果它是一个静态元素,你的原始代码应该可以工作。 – Barmar 2013-03-07 00:29:21

+0

这是真的,并且不使用委托表单更适用于那些只有少数元素绑定的情况。话虽如此,我认为(也许不正确)@Kimpoy使用委托的活动绑定是有原因的。 – 2013-03-07 00:40:36