0

我知道我遗漏了一些非常基本的东西,但是在您将“可放置” DIV 堆叠在一起的情况下使用 jQuery 时(想想嵌套框),您如何允许和接受最顶部 DIV 上的元素放置然后取消拖放事件,这样它就不会被发送到下面的其他“可拖放”DIV?

        $('#'+objectID+" .task-droppable").droppable({
        accept: function(d) { 
            if(d.hasClass("source-task")||d.hasClass("source-sequence")){ //sequences can contain both sequences and tasks
                return true;
            } //end if
        }, //end accept
        activeClass: "isDropDest",
        //hoverClass: "isDragging",

        //this is used for both drag/drop and item moves
        drop: function(event, ui) {
            var draggableId = ui.draggable.attr("id");
            var droppableId = $(this).attr("id");

            //var sender_id = ui.sender.attr('id');
            //var receiver_id = $(this).attr('id');
            //var item_id = ui.item.attr('id');
            //var above_id = ui.item.prev().attr('id');
            //var below_id = ui.item.next().attr('id');

            //check if this is a drag/drop or a move by looking for the object class
            if(!$('#'+draggableId).hasClass('object')) {
                $('#'+draggableId).css('top', '0px');
                $('#'+draggableId).css('left', '0px');
                createObject(draggableId, droppableId);
            } else {
                //handle the move - do nothing
            } //end if

            event.stopPropagation();
        } //end drop
    }); //end droppable

抱歉,今天的咖啡不够。

4

1 回答 1

2

听起来您可能需要使用贪婪选项

默认情况下,当一个元素被放置在嵌套的 droppable 上时,每个 droppable 都将接收该元素。但是,通过将此选项设置为 true,任何父 droppables 都不会接收该元素。

$( ".selector" ).droppable({ greedy: true });

工作示例

于 2013-11-11T22:05:04.237 回答