2010-08-20 46 views
2

叹息残疾人按钮,在IE8与jQuery.live仍然可点击( '点击')事件

我不断收到一些奇怪的问题与IE 8

我在每一个有这种

<input name="Btn_Edit" disabled="disabled" id="Btn_Edit" type="button" value="Edit"/> 

$(function() 
{ 
    $('#Btn_Edit').live('click', function() 
    { 

     alert('hi'); 

    }); 
}); 

所以其他浏览器此警报将永远不会触发,因为我的按钮被禁用。在IE 8中,它会进入我的编辑按钮并触发警报。

我不知道为什么。

http://jsfiddle.net/QgceL/

你可以自己去看吧。只需加载IE 8并尝试一下。

但是,如果我改变它。

http://jsfiddle.net/YD2eS/

看来工作。我仍然不知道它为什么会产生不同的光标而不是指针。

反正这个问题似乎与现场点击事件。

+0

它与jQuery处理“实时”事件的方式有关。 – mhitza 2010-08-20 19:33:02

+0

只是一个评论,因为它不是一个答案...我没有意识到,jQuery公开了一种方式来响应点击一个禁用的按钮...它将是非常有用的弹出消息解释给用户*为什么*他们尝试点击的按钮被禁用... – Rob 2010-08-20 20:18:10

+0

@Rob,如果您在容器中检测到元素,则可以通过事件冒泡来做到这一点。 event.target可以在这些情况下为您提供一些信息。 – 2010-08-20 20:29:09

回答

0

改变你的选择到:

$('#Btn_Edit[disabled!=true]') 

需要注意的是,如果你的选择是$这是不行的( '#Btn_Edit [!禁用=禁用]')

如果你这样做,你可以看到alert($('#Btn_Edit').attr('disabled'));它在未被禁用时将为'假',在禁用时为真。

这里是一个小提琴页面,看看它在行动:http://jsfiddle.net/QgceL/3/

+0

雅我有点做了那样的事情。我反而做了if($('#Btn_Edit')。attr('disabled')== false)//在实际的点击事件中继续。我不确定你的方式是否更快。我也发现令人困惑的是,我永远不知道是否要设置.attr('disabled',true)或.attr('disabled','disabled')。 – chobo2 2010-08-20 22:11:39

0

live更改为click。 是的,这太奇怪了!我不知道为什么会发生这种情况。

+0

现在这是一个选项。我有4个Ajax选项卡。如果用户会转到下一个选项卡并返回,则该按钮将无法工作。现在,我想我必须做一个检查,看看它是否真的被禁用或没有在实际的点击事件中,直到有人找出为什么发生这种情况。 – chobo2 2010-08-20 19:47:15

+0

每次用户在选项卡中单击ajax回调时,都可以运行事件绑定器。 – Topera 2010-08-20 20:39:59

+0

事件粘合剂?我没有遵循 – chobo2 2010-08-20 22:09:47

0

这似乎是一个jQuery错误,在版本发生< 1.5.x.这篇文章可能是在jQuery 1.4是最新版本的时候完成的,但是新版本没有这个问题。