Предотвращение сортируемых событий jQueryUI, вызывающих сбрасывание, когда внутри контейнера сбрасывания - PullRequest
0 голосов
/ 15 октября 2019

У меня есть капельный контейнер, в котором также содержатся сортируемые элементы. Эти два компонента не связаны между собой, но сортируемый контейнер должен находиться внутри контейнера для отбрасывания, чтобы конструкция работала.

Моя проблема заключается в том, что, когда я переставляю сортируемые элементы, он вызывает такое же событие сбрасывания, как если быЯ перетащил на него перетаскиваемый элемент.

Этот jsFiddle демонстрирует проблему: http://jsfiddle.net/48tmyLeb/2/

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

$('.droppable-container').droppable({
    snap: true,
    hoverClass: 'droppable-hover',
    drop: function (event, ui) {
        // Ignore droppable events triggered by sortable
        if (ui.draggable.hasClass('my-sortable-element')) {
            return;
        } else {
            // Do something
        }
    }
});

... Я думаю, что должен быть лучший путь, чем этотКто-нибудь решил это?

РЕДАКТИРОВАТЬ: Спасибо @Twisty за предоставление решения. Для меня все, что мне было нужно, это указать опцию accept при создании Droppable:

$('.droppable-container').droppable({
   accept: 'tr',
   ...
});

1 Ответ

1 голос
/ 16 октября 2019

Использование правильного селектора гарантирует, что они могут работать без помех.

$('.droppable-container:not(.sortable-container)').droppable({

Рабочий пример: http://jsfiddle.net/Twisty/z23nwhbf/

Я могу отбрасывать строки в одну и все равно сортировать другую.

...