至于;“可拖动的”;未嵌套的div标记:JQuery/JavaScript div标记“;遏制”;方法/算法?

至于;“可拖动的”;未嵌套的div标记:JQuery/JavaScript div标记“;遏制”;方法/算法?,javascript,jquery,graphics,html,Javascript,Jquery,Graphics,Html,背景:我创建了一个在线电路设计应用程序,其中.draggable()div标记是包含较小div容器的容器,等等 问题:对于任何特定的div标记,我需要快速确定它是否包含其他div标记(这可能反过来包含其他div标记) -->由于div标记是可拖动的,所以在DOM中它们并没有嵌套在彼此内部,但我认为它们是绝对定位的 因此,我认为“命中测试”方法是确定遏制的唯一方法,除非在某个地方内置了一些“秘密”例程,可以帮助实现这一点 我搜索了JQuery,但没有看到任何用于此的内置例程。有人知道比O(n^2)

背景:我创建了一个在线电路设计应用程序,其中.draggable()div标记是包含较小div容器的容器,等等

问题:对于任何特定的div标记,我需要快速确定它是否包含其他div标记(这可能反过来包含其他div标记)

-->由于div标记是可拖动的,所以在DOM中它们并没有嵌套在彼此内部,但我认为它们是绝对定位的

因此,我认为“命中测试”方法是确定遏制的唯一方法,除非在某个地方内置了一些“秘密”例程,可以帮助实现这一点

我搜索了JQuery,但没有看到任何用于此的内置例程。有人知道比O(n^2)更快的算法吗

似乎我必须在一个外循环(n)中遍历div标记列表,在一个内循环(另一个n)中与所有其他div标记进行比较,并进行“包容测试”(位置、宽度、高度),构建一个包含div标记的列表。这是n平方。然后,我必须通过连接包含的列表来构建所有嵌套div标记的列表。所以总数是O(n^2)+n

一定有更好的办法吗

$.contains(DivContainer, LookForThisDiv);
例如:

jQuery.contains(document.documentElement, document.body); // true
文件:

编辑 好的,如果那些div不是嵌套的,那么它几乎是无用的(请阅读) 无论如何,这是一个很好的实用函数。

除了“draggable”之外,我还将使用jQuery“droppable”

通过这种方式,您可以知道将某物放置在何处,并相应地在DOM中重新定位该项


看一看(解释如何从原始位置删除删除的元素并将其添加到删除目标)

div不嵌套有什么关键原因吗?我使用JQuery div.draggable()以便可以在工作区周围拖动回路组件。如果我将一个标签拖动到另一个标签中,我不相信draggable()会在物理上嵌套div标签。