Ответ 1
Вы должны переместить код в своем обработчике drop
на отдельную функцию.
Затем вы можете вызвать функцию как в обработчике, так и в другом месте.
У меня есть droppable с обработчиком событий drop:
$(this).droppable({
drop:function(){
console.log('OMG You Dropped It!');
}
});
У меня есть перетаскиваемый:
$(this).draggable();
Что я хочу сделать, это запустить обработчик события drop на droppable, не перетаскивая перетаскиваемый. Я хочу имитировать фактическое поведение без физического выполнения поведения.
Я подумал, что что-то вроде этого:
$(droppable).trigger('drop', [draggable]);
К сожалению, это не совсем так просто. Кто-нибудь знает, как я могу это сделать?
Вы должны переместить код в своем обработчике drop
на отдельную функцию.
Затем вы можете вызвать функцию как в обработчике, так и в другом месте.
Вы можете вызвать функцию, связанную с вызовом drop путем метода option:
$("#droppable").droppable({
drop: function(event, ui) {
do stuff }
});
var drop_function = $("#droppable").droppable.option('drop');
drop_function();
Таким образом вы получите все, что произойдет, если вы сбросите что-нибудь на droppable. Конечно, вы можете просто выполнить функцию, а не назначать ее. Тем не менее, хорошая идея назначить функцию для удаления, которую вы определяете где-то еще, только ради ясности.
Как указано StuperUser
и на основе ответа ajmurmann
, с последними версиями jQuery вы должны сделать:
$("#droppable").droppable({
drop: function(event, ui) {
do stuff }
});
var drop_function = $("#droppable").droppable('option', 'drop');
drop_function();