【发布时间】:2011-11-22 00:16:15
【问题描述】:
我正在编写一个 jQuery 插件,它“指向”DOM 中的一定数量的节点。然而,如果我尝试让我的插件保存对一组节点的引用,我担心它们会“过时”。
(虽然我意识到 JavaScript 是垃圾收集并且不会崩溃,但我希望能够使我的列表保持最新,而不是保留应该被 GC 处理的东西。)
我想到的第一件事是可能有某种钩子。但似乎没有一个看起来值得信赖的标准:
With JQuery, is it possible to have a function run when a DOM element calls .remove()?
Callback on the removal of an element from the DOM tree?
这让我想知道通过在节点列表上放置类属性来维护节点列表。这样,他们在列表中的成员将与他们一起旅行。但正如人们可能担心的那样,枚举这可能会非常缓慢,这就是为什么您应该将查询表述为tags before classes。
除了潜在的性能问题外,我想知道是否认为插件出于这种与样式无关的目的将类插入 DOM 节点是一种糟糕的形式。 (.data() 的优点之一是它相对带外,除了这个列表问题之外,我正在使用它。)
这似乎是一个很常见的问题,其他插件已经解决了。我很想将类解决方案用于它的“正确性”属性,即使它速度较慢。但是,有没有一种更快、更规范的方法可以两全其美?
【问题讨论】:
-
我认为这很大程度上取决于您对节点所做的工作。
-
@Andrew 我的插件需求其实比较简单——我想要一种快速的方法来枚举它们。客户在运行过程中对一些元素调用
$(element).myPlugIn(),以赋予这些元素一些“魔力”......作为该过程的一部分,能够枚举所有节点这一“魔力”非常重要应用于。但是我觉得把它们放在一个全局列表中很不舒服,以防插件的客户端正在修改文档,并且可能在没有明确调用插件来告诉它的情况下删除一些节点......
标签: jquery jquery-plugins jquery-callback