How do I trigger the Drop event with jQuery UI Dro

2020-02-05 06:59发布

问题:

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();