Сортируемый пользовательский интерфейс jQuery: как отключить connectSortable, но при этом можно перетаскивать элемент из него - PullRequest
0 голосов
/ 08 сентября 2010

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

Поэтому мне нужно как-то отключить «полный» список, но все же разрешить перетаскивание элемента из него.

// If this list has two items, disable it, otherwise enable it
if ($('li', this).size()==2) {
    $(this).addClass('ui-state-disabled');
} else {
    $(this).removeClass('ui-state-disabled');
}

Мне нужно как-то отключить полный ul как цель отбрасывания.

Любые идеи будут высоко оценены.

1 Ответ

1 голос
/ 11 сентября 2010

Как то так?Я спешу, поэтому не так много времени, чтобы объяснить. Вот демоверсия Код использует / ожидает изменения HTML-кода из сортируемых jQuery демонстраций

$(function() {
    var fullSortables;
    var hoveringOverSortable;

    $(".connectedSortable").sortable({
        connectWith: '.connectedSortable',
        start: function(event, ui) {

            fullSortables =
            $(".connectedSortable")
            .not(this)
            .filter(
                function() {
                    return $(this).children("li").not(ui.helper).length >= 2;
                }
            )
            .addClass('ui-state-disabled');
        },
        over: function(event, ui) {
            hoveringOverSortable = this;
        },
        stop: function(event, ui) {
            var that = this;
            fullSortables.each(function() {
                if (this == hoveringOverSortable)
                    $(that).sortable('cancel');
            });
            hoveringOverSortable = null;
            $(".connectedSortable").removeClass('ui-state-disabled')
        }
    }).disableSelection();
});
...