使用JavaScript模拟拖放

时间:2012-01-20 10:13:49

标签: javascript jquery

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

鉴于两个DOM元素dom1dom2,是否可以使用jQuery(或vanilla JavaScript)以编程方式模拟从dom1dom2的拖放操作,其中dom1是可拖动的,dom2可以使用jQuery UI进行删除。

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

4 个答案:

答案 0 :(得分:2)

你必须记住,jQuery.trigger不会触发HTML事件,也就是说,调用.click不会导致链接被跟踪。它只触发使用jQuery设置的事件。

http://jupiterjs.com/news/syn-a-standalone-synthetic-event-library是一个真正模仿HTML事件的库。它很容易使用

以下断言'hello'已从页面中删除:

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

答案 1 :(得分:1)

如果您正在使用用户界面,那么可拖动行为上会有dragstartdragdragstop个事件。您应该能够像使用任何其他事件一样使用jQuery.trigger()以编程方式调用这些内容。但是,您需要以某种方式手动操作event实例,以输入要删除的项目的坐标。我不确定它会有多好用,或者你为什么要这样做。

答案 2 :(得分:0)

您想要,动画移动到新的父级。检查JQuery - animate moving DOM element to new parent?

中的功能

答案 3 :(得分:-1)

我通常使用jquery.ui来处理拖放的复杂事物: http://jqueryui.com/demos/draggable/