Событие droppable out: Как получить элемент, куда перемещается мышь - PullRequest
0 голосов
/ 07 ноября 2019

Во время выпадающего события мне нужен элемент, в который перемещается курсор мыши. Если этот элемент не может быть сброшен, поведение по умолчанию должно быть выполнено.

Я попробовал следующее:

            $(dropSelector).droppable({
            over: function (event, ui) {
                ui.helper.css("cursor", "copy");
                // Some code on drop enter here...
            },
            out: function (event, ui) {
                // New element: mouse pointer might move to another droppable element...
                // How to obtain the element where the mouse moves to?
                if (/* next element is NOT droppable*/) {
                    ui.helper.css("cursor", "no-drop");
                    // Some code on drop out here...
                }
            },
            drop: function (event, ui) {
                // handle drop event
            }
        });

Однако я не смог найти способ получить элемент, где курсор мышиперемещается во время события out. Я пробовал event.target и event.currentTarget, но они не являются элементами, которые я ищу.

1 Ответ

0 голосов
/ 07 ноября 2019

Я использовал другое решение. Очевидно, что событие over для следующего элемента запускается до события out старого элемента. Поэтому я проверяю, является ли цель out последним введенным элементом.

    var _target = null;
    $(dropSelector).droppable({
        over: function (event, ui) {
            _target = event.target;
            ui.helper.css("cursor", "copy");
            // Some code on drop enter here...
        },
        out: function (event, ui) {
            if (_target === event.target) {
                // No 'over' occurred for a new element
                ui.helper.css("cursor", "no-drop");
                // Some code on drop out here...
            }
            else {
               // Some code on drop out of old element

               // Perhaps some code on 'over' that has to be done after
               // drop out of old element
            }

        },
        drop: function (event, ui) {
            // handle drop event
        }
    });   

Но: Могу ли я рассчитывать на то, что over на следующем элементе срабатывает до out на старомэлемент

...