【问题标题】:JQuery nested drag and drop event propagationJQuery嵌套拖放事件传播
【发布时间】:2012-11-19 21:04:32
【问题描述】:

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

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

所以最大的问题是:如果子接受属性评估为 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          
    }
});

【问题讨论】:

  • event.stopPropagation()??
  • 我在哪里有对事件实例的引用?是全球性的吗?

标签: jquery drag-and-drop droppable


【解决方案1】:

解决了。

我处理了事件传播,我删除了接受函数并在 drop 函数中添加了一个检查。如果该项目已经存在,则什么也不做,并且该掉落被还原:)

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

事后看来很简单..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多