如何使用jQuery检测文档中任何位置的左键单击?

我现在有这个:

$(document).click(function(e) { alert('clicked'); }); 

在Firefox中,当我左键单击或右键单击时,此事件将触发。 我只想在左键单击时触发它。

将单击处理程序附加到文档的工作方式与将其附加到其他元素的方式不同吗? 对于其他元素,它似乎只会触发左键单击。

除了查看依赖浏览器的e.button之外,还有办法检测左键点击吗?

谢谢

尝试

 $(document).click(function(e) { // Check for left button if (e.button == 0) { alert('clicked'); } }); 

然而,似乎有一些混乱,IE是否返回1或0作为左键单击,你可能需要测试这:)

进一步阅读: jQuery Gotcha

编辑 :错过了你要求不使用e.button 。 抱歉!

但是, 此处的示例返回相同的ID,无论在FF或IE中查看它,并使用e.button。 可能已经更新了jQuery框架? 另一个答案是IE的旧版本返回不同的值,这将是一个痛苦。 不幸的是我在这里只有IE 7/8进行测试。

你可以简单地注册一个像这样的“contextmenu”事件:

 $(document).bind("contextmenu",function(e){ return false; }); 

取自: http : //www.catswhocode.com/blog/8-awesome-jquery-tips-and-tricks

我已经读过,如果你在jQuery 1.3中使用“live”绑定,jQuery会规范化浏览器之间的点击。 我没试过这个。

但是,这表明它不会: http : //abeautifulsite.net/notebook/99

既然你说点击工作到处都正常,但在“文档”上,你是否尝试过100%div文件来捕获点击?

没有不依赖于浏览器的方法来仅检测左键单击。 您可以使用在IE和非IE浏览器下工作的代码:

 $("#element").live('click', function(e) { if( (!$.browser.msie && e.button == 0) || ($.browser.msie && e.button == 1) ) { // Left mouse button was clicked (all browsers) } }); 

摘自: http : //abeautifulsite.net/notebook/99