背景:我已经创建了一个在线电路设计应用程序,其中.draggable() div标记是包含较小div容器的容器,等等。
问:对于任何特定的div标签,我需要快速识别它是否包含其他div标签(反过来可能包含其他div标签)。
-->因为div标签是可拖动的,所以在DOM中,它们不是嵌套在彼此内部的,但我认为它们是绝对定位的。
因此,我认为“命中测试”方法是确定包容性的唯一方法,除非有一些“秘密”例程可以帮助实现这一点。
我已经搜索了JQuery,但我没有看到任何内置的例程。有谁知道比O(n^2)更快的算法吗?
似乎我必须遍历外部循环(n)中的div标记列表,并有一个内部循环(另一个n)来与所有其他div标记进行比较,并进行“包含测试”(位置、宽度、高度),构建包含的div标记列表。这是n的平方。然后,我必须通过连接包含的列表来构建所有嵌套的div标记的列表。所以总数是O(n^2)+n。
一定有更好的办法吗?
发布于 2010-06-02 21:15:09
除了"draggable“之外,我还会使用jQuery "droppable”。
这样,您就可以知道您将某些东西放在哪里,并可以相应地在DOM中重新定位该项。
看一下jQuery draggable + droppable: how to snap dropped element to dropped-on element (解释如何从原始位置删除拖放的元素并将其添加到拖放目标中)
发布于 2010-06-02 19:17:22
$.contains(DivContainer, LookForThisDiv);示例:
jQuery.contains(document.documentElement, document.body); // true文档:
$.contains()
编辑 ok,如果这些div不是嵌套的(只要读一读就知道了),这是一个很好的实用函数。
https://stackoverflow.com/questions/2957076
复制相似问题