正确完成 JavaScript 拖放和选择功能

标签 javascript jquery jquery-ui selection drag

我正在尝试使用 HTML 和 JavaScript 编写拖放和选择功能。我的意思是会有一组具有任意绝对位置的对象。我希望能够将光标拖到它们所在的区域。将其视为 RTS 策略(选择单位)或任何矢量图形编辑器(选择对象以移动它们并进行编辑)。

首先,我知道 Google & SO 前几页出现的内容。因此,我绝不要求为我搜索这些内容并在此处发布一些随机链接。

我找到的大多数解决方案都存在某种缺陷。主要问题是抑制实际的文本选择,这似乎有点违背网络浏览器的本质。一些代码片段会导致选择闪烁,我觉得这很烦人。有些在所有主要浏览器中表现不佳。

我要求推荐您实际使用过或看到成功使用过的代码/库。

第二件事是,我想真正了解抑制选择背后的 JavaScript 内部结构。理论上应该怎么做。有什么简单的方法可以实现这一目标吗?

我能找到的最接近的是: http://view.jquery.com/tags/ui/1.5b2/demos/ui.selectable.html

但是它似乎与 jQuery UI 紧密结合,而 jQuery UI 又需要 jQuery 1.3.x 而我真的很期待使用 jQuery 1.5

最佳答案

The main problem is suppressing actual text selection, which seems kind of against the very nature of a web browser.

你要找的函数是e.preventDefault();

$("#inputform").mousedown(function(e){
    e.preventDefault();
    //console.log('mousedown');
}).mouseup(function(e){
    e.preventDefault();
    //console.log('mouseup');
});

这样正好解决了文本选择的问题。我可以在网络上看到各种拖选 js 脚本,但不知何故我无法使它们工作。

关于正确完成 JavaScript 拖放和选择功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5851156/

相关文章:

javascript - 如何比较 Handlebars.js 中循环中的两个属性,其中一个属性位于循环范围之外?

javascript - 当我第二次调用 getJSON 时,它不是一个函数

javascript - 如果值大于 1,Angularjs ng-disabled 将被禁用

jQuery ajaxStart 与唯一元素绑定(bind)

jquery-ui - jquery ui datepicker - 需要一个可拖动的日期版本

javascript - JSONSchema 和验证子对象属性

javascript - 单击切换时增加序列号

javascript - 当 foreach 具有计算的可观察量时,动画过渡 beforeRemove/afterAdd

jquery - 如何通过传递参数并覆盖我自己的回调来自定义 jquery 小部件?

PhP 在选定值的情况下添加天/月