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

前端之家收集整理的这篇文章主要介绍了如何跟踪Jquery插件中的节点列表(如果客户端可以删除那些DOM节点)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个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?

jQuery remove() callback?

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

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

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

解决方法

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

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

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

猜你在找的jQuery相关文章