JQuery嵌套拖放事件传播

时间:2012-11-19 21:04:32

标签: jquery drag-and-drop droppable

我有两个嵌套的div都可以放置。根据内部div的内容,通过accept属性确定是否允许元素丢弃。通过这样做,我防止内部droppable重复。

问题是如果在内部div中将accept属性设置为false,则会将事件冒泡到父级。父母接受掉落,这正是我不想要的。一个复杂的因素是accept函数的参数只包含被删除的节点,我没有引用实际的事件对象所以我无法阻止传播:(

所以最大的问题是:如果子接受属性的计算结果为false,我可以阻止事件传播到父droppable吗?

代码:

$(node).droppable({
    tolerance: "intersect",
    accept: function(nodes) {
                    //if acceptPM evaluates to false the event is bubbled which I don't want
        return acceptPM(nodes);
    },
    greedy: true,
    activeClass: "ui-state-default",
    hoverClass: "ui-state-hover",
    drop: function(event, ui) {
        //do something          
    }
});

1 个答案:

答案 0 :(得分:0)

解决了它。

我处理了事件传播,我删除了accept函数并在drop函数中添加了一个检查。如果项目已经存在,则不执行任何操作,并且还原将丢弃:)

也许不是最干净的方式,但它有效。

事后很简单..