JQuery Droppable: бросить вне div? - PullRequest
       9

JQuery Droppable: бросить вне div?

7 голосов
/ 01 декабря 2009

Можно ли как-нибудь заставить jQuery выполнять функцию, когда вы перетаскиваете элемент за пределы DIV с возможностью сброса?

Допустим, у нас есть перетаскиваемые или сортируемые элементы в элементе div, и вы хотите, чтобы они были удалены, если они были удалены за пределы родительского элемента div.

Я знаю, что есть событие "out", но оно работает, как только вы перетаскиваете элемент за пределы div, а не когда вы его бросаете (отпускаете кнопку мыши).

Ответы [ 3 ]

8 голосов
/ 15 марта 2010

Наконец-то нашли правильное решение, хотя и немного «хакерское». То, что я делаю, я устанавливаю div переднего плана с перетаскиваемыми объектами в качестве объекта перетаскивания, но использую функции droppover и dropout, чтобы определить, находится ли элемент вне переднего плана div. Когда он находится вне div, я связываю событие mouseup, чтобы выполнить функцию удаления. Когда он вернется, я отсоединяю событие mouseup, чтобы оно не срабатывало.

Потому что при перетаскивании я уже удерживаю кнопку мыши нажатой, отпускание - это то же самое, что сбросить то, что у меня есть в моей "руке".

$("#foregroundDiv").droppable({
        accept: ".draggableThingy",
        tolerance: "pointer",       
        out: function(event, ui) {
            $(ui.helper).mouseup(function() {
                doSomethingTo(ui.draggable);
            });
        },
        over: function(event, ui) {
            $(ui.helper).unbind("mouseup");
        }
    });
1 голос
/ 01 декабря 2009

Почему бы не обернуть все элементы другим сбрасываемым div, а затем выполнить проверку там?

А что если пользователь уронит его за пределы окна браузера? Считаете ли вы это также?

0 голосов
/ 08 декабря 2009

Решил это довольно "хакерским" способом: сделал таблицу с содержимым div в центре и сделал все остальные ячейки таблицы доступными. По сути, это означает, что вы можете без проблем выйти за пределы центрального div, но это все еще далеко от хорошего способа сделать это.

Если у кого-то есть способ получше, скажите, пожалуйста.

...