How do I trigger the Drop event with jQuery UI Droppable without actually dragging and dropping?

拈花ヽ惹草 提交于 2019-11-27 03:15:58

问题


I have a droppable with a drop event handler:

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

I have a draggable:

$(this).draggable();

What I want to do is trigger the drop event handler on the droppable without actually dragging and dropping the draggable. I want to simulate the actual behavior without physically performing the behavior.

I thought something like this would do:

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

Unfortunately, it's not quite that simple. Does anyone know how I can accomplish this?


回答1:


You should move the code in your drop handler to a separate function.
You can then call the function both in the handler and elsewhere.




回答2:


You can trigger the function associated with the drop call via the option-method:

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

This way you get whatever would happen when dropping something on droppable. Of course you could just execute the function instead of assigning it. It's nonetheless a good idea to assign a function to drop, that you define somewhere else, just for clarities sake.




回答3:


As pointed by StuperUser and based on ajmurmann's answer, with the recent versions of jQuery you should do:

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


来源:https://stackoverflow.com/questions/3188130/how-do-i-trigger-the-drop-event-with-jquery-ui-droppable-without-actually-draggi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!