如何跟踪Jquery插件中的节点列表(如果客户端可以删除这些DOM节点)

Hos*_*ork 8 jquery jquery-plugins jquery-callback

我正在编写一个jQuery插件,它"指向"DOM中的一定数量的节点.然而,如果我尝试让我的插件保持对一组节点的引用,我担心它们会变得"陈旧".

(虽然我意识到JavaScript是垃圾收集并且不会崩溃,但我希望能够使我的列表保持最新状态,而不是坚持应该是GC的东西.)

我遇到的第一件事是可能会有某种钩子.但似乎没有一个看起来值得信赖的标准:

使用JQuery,当DOM元素调用.remove()时,是否可以运行函数?

从DOM树中删除元素的回调?

jQuery remove()回调?

这让我想通过在它们上面放置一个类属性来维护节点列表.这样,他们在列表中的成员资格就会与他们一起旅行.但是,正如人们可能会担心的那样,这在枚举时可能在病理上很慢,这就是为什么你应该在课前将你的查询表示为标签.

除了潜在的性能问题之外,我想知道插件是否因为这种目的将类戳到DOM节点上而被认为是糟糕的形式,这与样式无关.(其中一个更好的事情.data()是,它是相对带外的,除了这个列表问题,我正在使用它.)

这似乎是其他插件已经解决的常见问题.我很想使用类解决方案来获得它的"正确性"属性,即使速度较慢.但是,是否有一种更快,更规范的方式可以提供两全其美的效果?

And*_*rew 5

我相信jQuery UI是如何做到的.特别是Droppables,它们在jQuery对象内部维护一个列表,当它们悬停在它上面时它们会迭代.他们以两种方式管理清单,

  1. 添加在运行jQuery.remove()时触发的destroy处理程序.(他们挂钩到jQuerys删除函数来做到这一点)这不会处理普通的javascript删除虽然如此,
  2. 在做任何事之前检查它是否存在.

我认为它们不会删除它,因为它可能会从DOM中删除然后再放回去.