Javascript 如何在jQuery UI可拖放的情况下触发拖放事件,而不进行实际的拖放?

Javascript 如何在jQuery UI可拖放的情况下触发拖放事件,而不进行实际的拖放?,javascript,jquery,jquery-ui,droppable,Javascript,Jquery,Jquery Ui,Droppable,我有一个带有drop事件处理程序的可拖放的: $(this).droppable({ drop:function(){ console.log('OMG You Dropped It!'); } }); 我有一个可拖动的: $(this).draggable(); 我想做的是在可拖放上触发拖放事件处理程序,而不实际拖放可拖放。我想模拟实际的行为,而不实际执行该行为 我想这样做可以: $(droppable).trigger('drop', [draggable]); 不幸的

我有一个带有drop事件处理程序的可拖放的

$(this).droppable({
  drop:function(){
    console.log('OMG You Dropped It!');
  }
});
我有一个可拖动的

$(this).draggable();
我想做的是在可拖放上触发拖放事件处理程序,而不实际拖放可拖放。我想模拟实际的行为,而不实际执行该行为

我想这样做可以:

$(droppable).trigger('drop', [draggable]);

不幸的是,事情并不是那么简单。有人知道我是如何做到这一点的吗?

您应该将
drop
处理程序中的代码移动到一个单独的函数中。

然后,您可以在处理程序中和其他地方调用该函数。

您可以通过选项方法触发与drop调用关联的函数:

$("#droppable").droppable({
        drop: function(event, ui) {
            do stuff }
    });
var drop_function = $("#droppable").droppable.option('drop');
drop_function();
通过这种方式,您可以得到在Dropable上放置某物时会发生的任何情况。当然,您可以只执行函数而不是分配它。
尽管如此,为drop分配一个函数是一个好主意,您可以在其他地方定义该函数,这只是为了澄清。

正如StuperUser所指出的,并基于
ajmurmann
的回答,使用jQuery的最新版本,您应该做:

$("#droppable").droppable({
    drop: function(event, ui) {
        do stuff }
});
var drop_function = $("#droppable").droppable('option', 'drop');
drop_function();

以上是简化的示例代码,用于说明我想要完成的任务,而不是代码。无论如何,这将如何解决我的问题?您可以调用函数,而不是触发事件。+1表示能够在QUnit测试期间调用原始函数定义范围之外的函数(例如)。新语法为:$(“#droppable”).droppable('option','drop')。@StuperUser我不明白。$(“#droppable”)如何知道在其上拖放了哪个元素?在droppable的“drop”事件处理程序函数中,拖放的元素是:
ui.draggable
。检查drop事件:了解更多详细信息。@StuperUser在函数调用期间如何初始化这两个参数?drop_函数('event','ui-draggable');