Как вызвать событие Drop с помощью JQuery UI Droppable, не перетаскивая его? - PullRequest
14 голосов
/ 06 июля 2010

У меня есть droppable с обработчиком события удаления:

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

У меня есть перетаскиваемый :

$(this).draggable();

То, что я хочу сделать, это вызвать обработчик события перетаскивания на droppable без фактического перетаскивания draggable . Я хочу смоделировать фактическое поведение без физического выполнения поведения.

Я думал, что-то вроде этого подойдет:

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

К сожалению, не все так просто. Кто-нибудь знает, как мне это сделать?

Ответы [ 3 ]

11 голосов
/ 06 июля 2010

Вы должны переместить код в вашем обработчике drop в отдельную функцию.
Затем можно вызвать функцию как в обработчике, так и в другом месте.

9 голосов
/ 05 сентября 2010

Вы можете вызвать функцию, связанную с вызовом отбрасывания, с помощью метода-опции:

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

Таким образом, вы получите все, что произойдет, если что-то сбросить на dropable.Конечно, вы можете просто выполнить функцию вместо ее назначения.Тем не менее, неплохо было бы назначить функцию drop, которую вы определяете где-то еще, просто для ясности.

1 голос
/ 09 августа 2016

Как указано StuperUser и на основе ответа ajmurmann, с последними версиями jQuery вы должны сделать:

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