我现在有这个:
$(document).click(function(e) { alert('clicked'); });
在Firefox中,当我左键单击或右键单击时会触发此事件。我只想在左键单击时触发它。
将单击处理程序附加到文档的工作方式与将其附加到其他元素的工作方式不同吗?对于其他元素,它似乎只会触发左键单击。
除了查看与浏览器相关的e.button之外,还有办法检测仅左键点击吗?
由于
答案 0 :(得分:24)
尝试
$(document).click(function(e) {
// Check for left button
if (e.button == 0) {
alert('clicked');
}
});
然而,对于IE是否在左键单击时返回1或0似乎存在一些混淆,您可能需要对此进行测试:)
进一步阅读:jQuery Gotcha
编辑:错过了您要求不使用e.button
的位置。遗憾!
但是,示例here返回相同的ID,无论在FF或IE中查看它,并使用e.button。可能已经更新了jQuery框架?另一个答案是IE的旧版本返回不同的值,这将是一个痛苦。不幸的是我在这里只有IE 7/8进行测试。
答案 1 :(得分:2)
您可以直接注册“contextmenu”事件,如下所示:
$(document).bind("contextmenu",function(e){
return false;
});
取自:http://www.catswhocode.com/blog/8-awesome-jquery-tips-and-tricks
答案 2 :(得分:0)
我已经读过,如果你在jQuery 1.3中使用“live”绑定,jQuery会规范化浏览器之间的点击。我没试过这个。
但是,这表明它不会:http://abeautifulsite.net/notebook/99
既然你说点击工作在所有地方都能正常工作,但在“文档”上,你是否尝试过100%div文件来捕捉点击?
答案 3 :(得分:0)
没有非浏览器相关的方法只能检测左键单击。您可以使用在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)
}
});