如何在不实际拖放的情况下使用jQuery UI Droppable触发Drop事件?

Kap*_*ers 14 javascript jquery jquery-ui droppable

我有一个带有drop事件处理程序的droppable:

$(this).droppable({
  drop:function(){
    console.log('OMG You Dropped It!');
  }
});
Run Code Online (Sandbox Code Playgroud)

我有一个拖车:

$(this).draggable();
Run Code Online (Sandbox Code Playgroud)

我想要做的是触发droppable上的drop事件处理程序而不实际拖放draggable.我想在不实际执行行为的情况下模拟实际行为.

我认为这样的事情会做:

$(droppable).trigger('drop', [draggable]);
Run Code Online (Sandbox Code Playgroud)

不幸的是,它并不那么简单.有谁知道我怎么能做到这一点?

SLa*_*aks 11

您应该将drop处理程序中的代码移动到单独的函数中.
然后,您可以在处理程序和其他地方调用该函数.

  • http://snipplr.com/view/24431/这是@Slaks可能意味着什么的一个例子.=) (3认同)

ajm*_*ann 9

您可以通过option-method触发与drop调用相关的功能:

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

通过这种方式,您可以获得在droppable上放置内容时发生的任何事情.当然你可以只执行该功能而不是分配它.尽管如此,分配一个要删除的函数是一个好主意,你可以在其他地方定义,只是为了清楚起见.

  • 新语法是:$("#droppable").droppable('option','drop'). (4认同)
  • +1用于在QUnit测试期间能够在原始函数定义的范围之外调用(例如). (2认同)