在使用Firefox *时,使用带有实时功能的事件单击会导致奇怪的行为。 使用Firefox时,单击右键也会触发点击!在Google Chrome中,Internet Explorer 7也不会发生同样的情况。
示例:
*使用firefox 3.5.3测试
答案 0 :(得分:4)
据我所知,这是一个已知问题(bug?)。您可以通过测试单击按钮来轻松解决此问题:
$('a.foo').live("click", function(e) {
if (e.button == 0) { // 0 = left, 1 = middle, 2 = right
//left button was clicked
} else {
//other button was clicked (do nothing?)
//return false or e.preventDefault()
}
});
您可能更喜欢使用switch
,具体取决于您的具体要求,但如果点击左按钮以外的任何按钮,通常您可能只想做什么(或简单地返回),如上所述:< / p>
$('a.foo').live("click", function(e) {
switch(e.button) {
case 0 : alert('Left button was clicked');break;
default: return false;
}
});
答案 1 :(得分:1)
我认为这是一个已知的“错误”,您可以在附加单击处理程序(附加到文档后)后查询事件对象并查看它是否右键单击,否则在操作之后手动附加单击处理程序DOM。
查找后,e.button是您要查询的属性:
.live('click', function(e){
if ( e.button == 2 ) return false; // exit if right clicking
// normal action
});
答案 2 :(得分:1)
请参阅my answer here:如果您不介意稍微更改jQuery源代码,请在liveHandler()
中添加一行完全解决问题。