15

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

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

我有一个可拖动的:

$(this).draggable();

我想要做的是触发droppable上的 drop 事件处理程序,而无需实际拖放draggable。我想模拟实际行为而不实际执行行为。

我认为这样的事情会做:

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

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

4

3 回答 3

11

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

于 2010-07-06T16:22:59.833 回答
9

您可以通过 option-method 触发与 drop call 关联的函数:

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

这样你就可以得到在 droppable 上放置东西时会发生的任何事情。当然,您可以只执行该功能而不是分配它。尽管如此,为了清楚起见,将函数分配给 drop 是一个好主意,您可以在其他地方定义该函数。

于 2010-09-05T17:30:35.820 回答
1

正如's answer 所指出的那样,使用StuperUser最新版本的 jQuery,您应该这样做:ajmurmann

$("#droppable").droppable({
    drop: function(event, ui) {
        do stuff }
});
var drop_function = $("#droppable").droppable('option', 'drop');
drop_function();
于 2016-08-09T14:12:58.850 回答