当拖动的项目是来自原始容器的最后一个可拖动对象时,jQuery Drag Drop取消

时间:2012-09-11 20:31:27

标签: jquery-ui drag-and-drop draggable jquery-ui-sortable

我定义了多个DropZone,每个dropZone需要保留至少一个可拖动的对象。

当用户尝试从dropZone移动最后一项时,我需要警告用户,无法移动最后一项并取消移动操作。我读到ui.render可以在接收事件中访问,尽管它总是空的。

我需要访问原始的可拖动父级(它来自的dropZone)并计算可拖动子级的数量。当计数现在为0时,我会取消移动动作,以便拖动的块返回到它的原始位置。

类似的东西:

function SortableReceiveDrag(event, ui) {
    if ($(ui.sender).find("div.dragableBlock").length <= 0) {
        $(ui.sender).sortable('cancel');        
    }
}

我的约束如下:

var templateContent = $("#templatectn");
contentDropZones = templateContent.find('div.ContentZone.dropZone');
contentDropZones.sortable({
    accept: 'div.dragableBlock',
    connectWith: 'div.ContentZone.dropZone',
    appendTo: "parent",
    axis: false,
    containment: 'document',
    cursor: 'move',
    cursorAt: false,
    dropOnEmpty: true,
    forceHelperSize: true,
    forcePlaceholderSize: true,
    iframeFix: true,
    items: 'div.dragableBlock',
    greedy: true,
    grid: false,
    helper: "clone",
    opacity: 0.45,
    placeholder: 'ui-block-placeholder',
    revert: false,
    scroll: true,
    scrollSensitivity: 20,
    scrollSpeed: 20,
    scope: "default",
    tolerance: "pointer",
    zIndex: 2700,
    start: function (event, ui) { SortableStartDrag(event, ui); },
    stop: function (event, ui) { SortableStopDrag(event, ui); },
    receive: function (event, ui) { SortableReceiveDrag(event, ui); },
    change: SortableChange
});
contentDropZones.disableSelection();

知道为什么这不起作用?

谢谢, 弗朗索瓦

0 个答案:

没有答案