我有一个可放置的div#space
和一个可拖动的li.element
集合。当我在li.element
中拖动div#space
并创建新的ul.group
时,li.element
会附加到ul.group
,最后ul.group
是做得不好。
给出
我希望这些元素的行为如下:
li.element
被删除不包含,则ul.group
将被添加到li.element
ul.group
将恢复为原始位置li.element
(ul.group
之外)li.element
被删除时,如上所述创建了一个新组。问题是当一个元素被放置在不接受它的li.element
上时,父div#space
将捕获该事件并创建一个新组。
ul.group
有一个 accept 函数,用于检查droppable是否为元素,以及它是否已被删除。
ul.group
如果不通过接受所有内容并忽略drop handler中的内容,您将如何实现此行为? (我没有尝试,但我想这会奏效)
修改的
我修补了jquery-ui-1.8.4.js以将事件传递给accept函数。现在我可以使用div#space
来停止传播,但是我必须手动将可拖动的帮助器设置回原来的位置以模拟恢复,然后将其从dom中删除。
ul.grpup
不幸的是,它似乎也破坏了原始元素中的 draggable 行为。为什么,为什么?
答案 0 :(得分:1)
我设法实现了类似的行为,尽管使用了未记录的jQuery.ui功能。
如果查看jquery.ui.draggable
实现(至少对于v1.8.16),revert
选项也可以是一个函数。它有this
是可拖动元素,单个参数是接受放置的droppable,返回值是boolean
以指示是否还原可拖动。
所以在你的情况下你需要
div#space
和ul.group
始终接受丢弃并贪婪drop
处理程序并仅处理项目(如果它不在该组中)revert
函数中执行类似检查,如果它已经在组中,则还原自身。