事实上,如果不破解 jQuery UI 代码,这是不可能的。
我不知道你为什么要使用这种行为,因为可能会让你的最终用户感到困惑,但这是一个可能的解决方案。
从这张 jQuery UI 票开始http://bugs.jqueryui.com/ticket/6909 http://bugs.jqueryui.com/ticket/6909我构建了一个自定义版本的 jQuery UI。
所以你必须使用该库的修改版本。
我使用以下命令禁用整个页面的浏览器右键单击默认菜单:
<body oncontextmenu="return false;">
或引用特定元素:
$("#sortable").bind("contextmenu",function(e){
return false;
});
以下是对 jQuery UI 代码的两个主要自定义编辑。
In ui.mouse
默认选项添加选项:
which:1
来自 jQuery UI 参考:
其中(数字)默认值:1
与“which”事件属性匹配的数字以指示
按下的鼠标按钮。 (0 = 任意按钮,1 = 左按钮,2 =
中按钮,3 = 右按钮)
功能中_mouseDown
更改代码以读取此选项:
tnIsLeft = (event.which == this.options.which) // instead of this (event.which == 1)
理论上,在 jQuery UI 的未来版本中,无需任何 hack 即可支持此功能。
这是一个工作小提琴:http://jsfiddle.net/IrvinDominin/nLdLu/ http://jsfiddle.net/IrvinDominin/nLdLu/
EDIT
以下是带有右键单击 mod 的 Pastebin 版本,包括:
- 包括:jquery.ui.core.js、jquery.ui.widget.js、jquery.ui.mouse.js、jquery.ui.position.js、jquery.ui.draggable.js、
jquery.ui.droppable.js、jquery.ui.ressized.js、
jquery.ui.selectable.js、jquery.ui.sortable.js
Link: http://pastebin.com/nn3Pj0pM http://pastebin.com/nn3Pj0pM
通常,修改后的副本并不是一件好事,您还可以扩展和覆盖让鼠标右键工作所需的两个功能,但主要问题仍然存在:如果您升级 jQuery UI,则必须检查兼容性或将您的 mod 移植到更新的版本版本。据我所知 jQuery UI 2.x 将支持which
执行。
希望这可以帮助。