我们可以让 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 可拖动/可排序以在鼠标右键上工作吗 的相关文章

  • jQuery 验证日期范围问题

    我的代码中有很多地方有成对的相关开始和结束日期字段 范围 我需要验证开始日期早于结束日期 我正在使用 jQuery 验证插件 这是我的代码 http jsfiddle net jinglesthula dESz2 http jsfiddle
  • 卸载/销毁 Angular 延迟加载组件

    我的设置与此处找到的帖子类似http ify io lazy loading in angularjs http ify io lazy loading in angularjs 处理 Angular 中我的应用程序的各种组件的延迟加载 我
  • Nodemailer:从未收到问候语

    当尝试使用 Nodemailer 在 Node 内发送电子邮件时 https github com nodemailer nodemailer https github com nodemailer nodemailer 调用sendMai
  • Typescript:如何在自定义过滤器中使用角度 $filter

    如何在自定义过滤器中使用 Angular filter 如何注入 filter依赖 module Filters export class CustomFilter public static Factory return function
  • jQuery 检查复选框并触发 javascript onclick 事件

    我正在尝试使用 jQuery 检查复选框并在此过程中触发 onclick 事件 假设我在 html 中定义了一个复选框
  • Jquery UI 日期选择器 设置默认日期

    我使用 jQuery UI 作为日期选择器 我想在字段中显示当前日期作为默认值 以下是我的代码 请帮助 From Date
  • 离子旋转器未显示

    我用 http 请求填充 Ionic 集合重复列表 但我不想将所有内容直接加载到 DOM 中 因此 我只显示其中一些项目 并在您向下滚动时添加其余项目 为此我实现了无限滚动功能 当我到达页面底部时 它应该显示一个旋转器 但它没有 这些物品至
  • 更新 Google 地图流量层而无需重新加载页面

    我的页面中嵌入了 Google 地图 我使用 initMap js 函数来初始化地图 function initMap var map new google maps Map document getElementById t map zo
  • EJS在JS onload函数中访问express变量

    我知道你可以像这样获取 ejs 文件中变量的值 h1 h1 如果我要在同一个 ejs 页面的 onload javascript 函数中使用相同的标题变量 我将如何使用它 例如 这个函数产生一个控制台错误说 未捕获的语法错误 意外的标识符
  • 将具体数据放在jqgrid摘要视图标题中

    我有一个工作 jqgrid 表 在标题上有摘要视图 就像我在这个 plunkr 中实现的示例一样http plnkr co edit wjIlaVMsa9vusmfhgfL1 p preview http plnkr co edit wjI
  • 当我更改浏览器选项卡时,Jquery Animate 停止

    我的投资组合中有一个疯狂的问题 http hericdk com http hericdk com 我用jquery做了一个简单的动画 一个太空飞船飞行的动画 然后就出现了我的作品 这个想法不错 大家都喜欢 但问题是 由于某种奇怪的原因 当
  • 从网站存储数据的最简单方法(在服务器端)

    我有一个非常简单的网站 实际上是单页 有一个输入字段和一个按钮 我需要将用户提交的数据存储在服务器端的某个位置 完美的方法可能是简单的文本文件 并在每次单击按钮后附加新行 日志文件也可以 据我了解 JavaScript 本身是不可能的 我在
  • jQuery:如何在显示元素的同时使用高亮效果?

    我在一个页面上有两个元素 div content div div style display none different content div 当我点击当前显示的div 我想隐藏它并显示另一个 这很容易做到 a hide b show
  • (0, eval) () 的作用是什么? [复制]

    这个问题在这里已经有答案了 以下内容来自这个问题 https stackoverflow com questions 14119988 return this 0 evalthis 14120023 14120023 function q
  • ReferenceError 和全局对象

    在浏览器中的 JavaScript 中window是全局对象 这意味着在全局范围内定义的每个变量都是window 那么为什么我会得到这个结果 console log window foo No error logs undefined co
  • 仅在首页加载时使用 cookie 加载 colorbox

    我尝试了来自网络的参考代码 仅在页面加载时加载特定元素一次 这是示例代码
  • `ie9` - contenteditable false 在父级可编辑时不起作用

    我正在尝试制作内容可编辑和不可编辑的容器 用户可以通过 3 种方式使用它 他们可以将内容与non editable 他们可以将内容与editable 他们可以在不选择其中之一的情况下放置内容 可编辑 我正在努力实现以下目标 content
  • JavaScript 中最长的通用前缀

    我正在尝试解决 Leet Code 挑战14 最长公共前缀 https leetcode com problems longest common prefix 编写一个函数来查找字符串数组中最长的公共前缀字符串 如果没有公共前缀 则返回空字
  • 在 JSP 或 Javascript 中清除浏览器缓存中的图像

    我正在为一所大学开发JSP Web 应用程序 用户页面中显示人员图片 用户注销后如何从网络浏览器缓存中清除这张图片 使用 JSP 或 JavaScript 那是不可能的 最好的选择是完全禁用相关资源的缓存 创建一个filter https
  • 使用 JavaScript onclick 添加表格行

    我正在尝试使用 javascript 添加下面找到的完全相同的元素 我已经尝试了这里找到的所有解决方案 我什至尝试用php echo但没有运气 无需更改任何输入名称或类似内容 只需单击该按钮即可向表中添加另一行 仅此而已 这是该元素 tr

随机推荐