2010-06-04 69 views
6

我编写了一个jquery脚本,其中屏幕上有一个小网格,并使用拖放用户可以将网格放置在网格上(卡入到位)。目前,如果您将鼠标悬停在平铺上,则可以选择旋转,但如果您可以右键点击旋转(使其更自然),我会更喜欢它。我理解阻止完全右键点击通常是不被理睬的,所以想知道是否可能只在特定元素内,然后捕获该事件,在JS中执行某些操作并禁用上下文菜单? - 适用于所有浏览器。JavaScript:捕获右键单击并禁用某些元素内的菜单

在附注中,目前我正在使用jQuery进行效果和自定义javascript的拖放,是否值得查看一个用于拖放的jQuery插件?

非常感谢,

回答

12

为了捕获右键,就可以使用这个jQuery:

$('#gridID').bind('contextmenu', function(e) { 
    // do stuff here instead of normal context menu 
    return false; 
}); 

这适用于chrome,firefox和Safari。 未测试IE 。也适用于IE。只有警告,它显然不在歌剧中奏效。所以,如果你可以忍受那个...

+0

这个答案是无效的,contextmenu被触发右侧mousedown,而不是右键单击。 – 2015-11-27 13:55:20

+0

有点苛刻和挑剔的想法可以降低有效的答案。也许措辞令人困惑,但即使Mozilla文档也说“右键单击”(https://developer.mozilla.org/en-US/docs/Web/Events/contextmenu)。无论如何,代码是关于简单地捕获浏览器的“contextmenu”事件并停止显示菜单。 – ryanulit 2015-11-30 19:16:06

0

我不喜欢在网页上使用鼠标右键。但是,如果您确实想要这样做,则可以按照here所述的方法捕获鼠标右键。如果鼠标悬停在网格单元上,可以有条件地阻止鼠标右键(换句话说,在事件处理程序中返回false)。

关于你的奖金问题:jquery ui has drag & drop functionality。使用它比使用自己的可能更容易。

+0

非常感谢,遵循你的建议我一直在寻找“可拖动”,发现这个http://jqueryui.com/demos/draggable/snap-to.html似乎是我需要什么拖动 – 2010-06-04 10:59:25