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

14,140

Solution 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.

Solution 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.

Solution 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();
Share:
14,140
Kappers
Author by

Kappers

I'm a .Net Developer, but my forte tends to revolve around front-end stuffs like markup, CSS, and client-side scripting.

Updated on June 14, 2022

Comments

  • Kappers
    Kappers almost 2 years

    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?