我们可以让 JQuery UI 可拖动/可排序以在鼠标右键上工作吗

2023-12-26

我有一个页面,其功能绑定到鼠标左键和右键,即。鼠标左键可拖动/可排序,鼠标右键可自定义上下文菜单。

我想要做的是切换功能,以便上下文菜单在单击鼠标左键时起作用,而 JQuery UI Draggable/Sortable 在单击鼠标右键时起作用。

谢谢你的帮助。

PS:我可以使自定义上下文菜单在鼠标左键上工作。所以我只需要有关 JQuery UI Draggable/Sortable 的帮助。谢谢。


事实上,如果不破解 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执行。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我们可以让 JQuery UI 可拖动/可排序以在鼠标右键上工作吗 的相关文章

随机推荐