- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经看到几个关于在放置时交换两个可拖动元素的问题,但我的情况有点不同。
基本上,我有一堆放置在(非线性)网格中的可拖动元素。在许多情况下,网格将完全填充数据。我们希望允许用户轻松地重新排列网格元素,但由于网格是非线性的,因此无法使用“可排序”。而且由于网格已完全填充,当一个被拖到另一个上时直接交换两个网格位置并不是理想的解决方案(因为我们不是试图将仅三个位置重新排列成某种脑筋急转弯)。
我们想要做的是在拖动网格元素(称为 A)时进行正常的“拖动”操作,但是当元素随后被放到所需的目的地(其中已经有另一个网格项目)时,称之为 B),那么 A 应该取代 B 的位置,然后 B 应该“捕捉到”鼠标光标,就像用户单击并拖动它一样。这显然会稍微扰乱鼠标交互,因为现在用户没有按下鼠标按钮,而是在周围拖动一个元素,因此要释放该元素,他要么单击 A 来自的空单元格,要么单击另一个网格元素 C ,此时 B 将取代 C,C 现在将“附加”到鼠标光标。
我仔细研究了“可拖动”文档和源代码,似乎没有办法按照我想要的开箱即用方式对其进行精确配置,但我很确定我可以扩展可拖动小部件并覆盖它的几个方法来实现我想要的,而不是必须从头开始编写我自己的解决方案。如果它使它更容易,那么与拖动事件相比,首先用于触发拖动的鼠标事件是单击还是单击对我来说真的无关紧要。
需要说明的是,这是我正在寻找的一种交互图:
Original Setup - ^ is mouse cursor
[A] ^ [C]
[B] [D]
Now click and drag on A. Result is:
[ ]^A [C]
[B] [D]
Now drag over B and release. Result is:
[ ] [C]
[A]^B [D]
B is now acting as if it's being dragged, but mouse button is not held down. Move
cursor over C and click mouse button. Result is:
[ ] [B] ^C
[A] [D]
B has taken C's place, and C is now following the mouse cursor. Again, mouse
button is not being held down. Move cursor over empty cell and click mouse
button. Result is:
[C] ^ [B]
[A] [D]
Now there is nothing attached to the mouse cursor.
最佳答案
好吧,由于甚至没有人尝试回答我的问题,我想出了一个相当简单的方法来自行完成此任务。在这种情况下,我的救星竟然是 jquery.simulate
、jquery.simulate.ext
和 jquery.simulate.drag-n-drop
插件。使用这些在一组元素(或者在拖放插件的情况下,单个元素)上模拟特定的 native 浏览器事件是微不足道的。这意味着我可以简单地使用 jQueryUI droppable 的“drop”回调来完成我需要的:
drop: function (e, ui) {
var $targ = $(e.target);
ui.draggable.detach().appendTo($targ).css({top: 0, left: 0});
$targ.find('.ui-draggable .handle').simulate('drag', {});
}
就是这样!仅此而已。这是一个演示实际解决方案的 fiddle :http://jsfiddle.net/isochronous/mD8uM/
更新:事实证明处理可拖动的“还原”行为实际上是最难的部分。我最终创建了自己的扩展 $.ui.draggable
的小部件来处理这个问题。我已经更新了 fiddle 并添加了评论来解释它是如何工作的,以防万一有人感兴趣。
关于javascript - 在放置另一个可拖动元素时将可拖动元素交换为鼠标光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22256694/
我有一个包含透明区域的 png,并将其设置为图像标签。 当光标位于图像的不透明部分上时,如何将光标设置为手? 谢谢 最佳答案 为此,您需要查看位图本身。 WPF 的 HitTest 机制认为任何使用“
我想隐藏圆形仪表的手(那就是中间的东西,对吧?)。到目前为止,我尝试过: myCircularGauge.getHand().setVisible(false); 但是,绘制图表时这似乎会产生崩溃。如
我有两张图片:一张是张开的手,一张是抓着的手。我希望一个简单的“onmousedown”和“onmouseup”函数有助于制作出著名的抓手,您可以在类似谷歌地图的东西中看到它。但...抱歉,从头开始:
是否可以在sequelize迁移中使用光标?我正在尝试创建 DML 脚本,其想法是循环表中的值,即。使用游标输入日期,然后将值插入到其他表中,即。光标内的膳食日。 table : day dayId
我正在尝试使用格式加载值 +02:00 - mysql> select SUBSTR('2016-01-12T14:29:31.000+02:00',24,6); +02:00
我一直在尝试构建一个基于网络的文本编辑器。作为该过程的一部分,我正在尝试动态创建和修改基于元素的事件和用于字体编辑的击键事件。在这个特别的jsfiddle示例 我试图在按下 CTRL+b 并将焦点/插
我同时使用了 supertab 和 snipmate 插件。假设我正在使用 snipmate 创建一个 if 语句结构。在 if 语句中完成添加语句后,如何快速将光标移动到 if 语句之后。例如: i
我正在为我的 BlackBerry 项目创建一个搜索框,但看起来 BlackBerry 没有用于创建单行 EditField 的 API。我通过扩展 BasicEditField 和覆盖布局和绘制等方
我想知道如何获得 not-allowed光标在我禁用的链接上。我试图将它添加到禁用事件中,但它在那里不起作用,然后我尝试使用相同的光标事件引入悬停效果。关于如何让它发挥作用的任何想法?我在这里包含了我
在 Delphi 6 中,我可以使用 Screen.Cursor 更改所有表单的鼠标光标: procedure TForm1.Button1Click(Sender: TObject); begin
这个 Meteor 服务器代码需要每 n 秒从集合中打印一次文档,我该如何让它工作?谢谢 myCol.find({abc: undefined}).forEach( fun
在这个论坛上花了相当长的时间寻找与我的问题类似的答案,但找不到符合我的情况的答案。 我有一个 HTML 表单,通过 javascript 将其提交到我的 aspx 页面。 function Submi
是否可以在网页上创建透明的 HTML 光标?我使用 div 作为光标,我想让 div 50% 透明: http://jsfiddle.net/mCgmP/16/ I want this cursor
我正在使用 Cursor 来获取存储在我的 SQLite 数据库中的一些数据。当我的光标有数据库中的一些数据时,代码可以正常工作。但是,当 Cursor 不包含任何数据时,我在 Cursor.move
我希望隐藏特定范围的 x 和 y 位置中的光标。这是一些示例代码,代表了我想要做的事情。 if(x >= xLowerBound && x = yLowerBound + 20 && y = xLow
我有一个 .jsp 页面,用户可以在其中输入信息,然后使用保存按钮保存。该应用程序可以运行,但由于按钮的单击事件正在运行 Java 代码,然后将保存的信息添加到 Oracle 数据库,因此需要一些时间
为什么 Android 中 Cursor 没有 moveBeforeFirst()? 其他风格的 Java 中也有类似的方法,如果您需要重新迭代结果集(例如,在 while(cursor.moveTo
我想使用 Tkinter 捕获相对鼠标运动。我附上一个监听器并且能够获取鼠标移动。但是,我希望能够“捕获”/“锁定”光标,使其不可见并且无法离开窗口(就像游戏一样)。我的目标是获得相对鼠标移动而不受窗
当应用程序同步时,我尝试更新数据库中每一行的“html”列。我用过这个教程Here将应用程序添加到“配置文件”列表中。这是我在 SyncAdapter 中使用的代码: private static v
我正在使用 Uploadify带有图像按钮。一切正常。除了,我需要在鼠标悬停时使用 cursor:crosshair; 而不是 cursor:default;。 我试着在 CSS 中这样设置它: ob
我是一名优秀的程序员,十分优秀!