我知道jQuery可以以编程方式触发侦听这些事件的DOM元素上的事件。例如,$el.click()
会触发$el
上的点击事件,而无需用鼠标点击$el
。
鉴于两个DOM元素dom1
和dom2
,是否可以使用jQuery(或vanilla JavaScript)以编程方式模拟从dom1
到dom2
的拖放操作,其中dom1
是可拖动的,dom2
可以使用jQuery UI进行删除。
注意:我想这样做的原因是构建自动UI测试。
答案 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)
如果您正在使用用户界面,那么可拖动行为上会有dragstart
,drag
和dragstop
个事件。您应该能够像使用任何其他事件一样使用jQuery.trigger()
以编程方式调用这些内容。但是,您需要以某种方式手动操作event
实例,以输入要删除的项目的坐标。我不确定它会有多好用,或者你为什么要这样做。
答案 2 :(得分:0)
您想要,动画移动到新的父级。检查JQuery - animate moving DOM element to new parent?
中的功能答案 3 :(得分:-1)
我通常使用jquery.ui来处理拖放的复杂事物: http://jqueryui.com/demos/draggable/