使用JavaScript模拟拖放

使用JavaScript模拟拖放,javascript,jquery,Javascript,Jquery,我知道jQuery可以通过编程方式在侦听这些事件的DOM元素上触发事件。例如,$el.click()将触发$el上的单击事件,而无需用鼠标实际单击$el 给定两个DOM元素dom1和dom2,是否可以使用jQuery(或普通JavaScript)以编程方式模拟从dom1到dom2的拖放操作,其中dom1可以拖动,而dom2可以使用jQuery UI拖放 注意:我这样做的原因是为了构建自动化的UI测试。我通常使用jquery.UI来处理复杂的拖放操作: 如果您使用的是UI,则在可拖动行为上会出现事

我知道jQuery可以通过编程方式在侦听这些事件的DOM元素上触发事件。例如,
$el.click()
将触发
$el
上的单击事件,而无需用鼠标实际单击
$el

给定两个DOM元素
dom1
dom2
,是否可以使用jQuery(或普通JavaScript)以编程方式模拟从
dom1
dom2
的拖放操作,其中
dom1
可以拖动,而
dom2
可以使用jQuery UI拖放


注意:我这样做的原因是为了构建自动化的UI测试。

我通常使用jquery.UI来处理复杂的拖放操作:

如果您使用的是UI,则在可拖动行为上会出现事件
dragstart
dragstop
。您应该能够像任何其他事件一样,通过使用
jQuery.trigger()
以编程方式调用这些事件。但是,您需要以某种方式手动操作
事件
实例,以输入要删除的项的坐标。我不知道这会有多好,也不知道你为什么想这么做。

你想,随着动画移到一个新的父级。检查

中的函数,您必须记住jQuery.trigger不会触发HTML事件,即调用。单击不会导致后续链接。它仅触发使用jQuery设置的事件

是一个真正模仿HTML事件的库。它很容易使用

以下声明已从页面中删除“hello”:

Syn.click( {},'hello' )
   .type( 'Hello World' )
   .delay()         //waits 600ms seconds by default
   .drag( $('#trash') , function() {
     ok( $('#hello').length == 0, "removed hello" )
 }); 

“触发拖放”有点模糊。我认为你想创建一个拖放式界面,但你的意思是“我想使用[不存在的]内置拖放事件”?@JamWaffles:我已经编辑了这个问题。我有可拖动和可拖放的元素。我想在不使用鼠标的情况下,通过编写JavaScript代码来触发对这些元素的拖放。我认为这并不能回答我的问题。我有一些元素,它们已经可以拖放了。我想触发
拖动
拖放
事件,而无需手动操作(使用鼠标)。@Randomblue您已经在使用jQuery UI还是其他插件?在任何情况下,都应该有回调函数和相关文档。如果没有,您可以自己扩展/修补插件(如果它在Github或类似的平台上),或者使用不同的插件。也许您实际上是在寻找一个模拟on元素移动到另一个元素的动画?如果是这样的话,这和用户交互有什么关系?我正在尝试编写UI测试。啊。。。现在一切都有意义了-你应该在你的问题中添加这是用于UI测试的:-)你使用的是什么测试框架?我使用的是Selenium WebDriver,但是它在拖放方面有缺点。在Selenium中使用draganddrop支持的情况下,详细说明您遇到的问题可能会更好。我无法让WebDriver拖放在复杂的jQuery UI上工作。
单击并按住()
部件工作正常,但
移动到元素()
位无效。这很令人沮丧。