使用data()分配的jquery数据的有效期是多久?

使用data()分配的jquery数据的有效期是多久?,jquery,object,Jquery,Object,我正在通过我正在创建的jquery将一些数据分配给html对象,问题是当我从插件调用一个方法时,我分配的数据不再存在于对象中。使用.data()的数据只要: jQuery仍在您的页面中。jQuery使用.data()为数据使用。它从不在DOM上 只要绑定数据的元素仍然存在,或者如果在DOM中删除了该元素,它就会被删除 您不需要重新加载页面。存储在.data()中的数据在重新加载页面时不会保持不变 来自文档: jQuery.data()方法允许我们将任何类型的数据附加到DOM元素,这种方式可以避

我正在通过我正在创建的jquery将一些数据分配给html对象,问题是当我从插件调用一个方法时,我分配的数据不再存在于对象中。

使用
.data()的数据只要:

  • jQuery仍在您的页面中。jQuery使用
    .data()
    为数据使用。它从不在DOM上

  • 只要绑定数据的元素仍然存在,或者如果在DOM中删除了该元素,它就会被删除

  • 您不需要重新加载页面。存储在
    .data()
    中的数据在重新加载页面时不会保持不变

来自文档:

jQuery.data()
方法允许我们将任何类型的数据附加到DOM元素,这种方式可以避免循环引用,从而避免内存泄漏jQuery确保在通过jQuery方法删除DOM元素时以及在用户离开页面时删除数据。我们可以为单个元素设置多个不同的值,然后检索它们:


了解
.data()
的工作原理有助于了解数据的寿命。当您使用
.data()
存储某些内容时,它会进入jQuery中的内部javascript数据结构。因此,在这方面,它只是一个javascript变量,它的寿命与任何其他javascript变量的寿命一样长

这意味着一旦你离开页面,它就完全消失了——就像所有其他javascript变量一样

另一种删除数据的方法是,如果某些javascript代码专门从数据结构中删除数据。通常只有在使用jQuery方法故意处理DOM对象时才会发生这种情况。这可以通过
$(elem).remove()
$(elem).html(“一些html)
和从DOM中删除元素的任何其他jQuery方法来完成。由于这些方法从DOM中删除对象,jQuery“清理”了
.data()
与这些元素关联的信息。其中一个特殊的例外是
.detach()
,它从DOM中删除一个元素,但不删除它的
.data()
info。这样做的目的是允许您将其从DOM中删除,但可能会保留其状态,以便您可以将其放回其他地方或稍后的DOM中

注意:如果不使用jQuery函数(例如
.removeChild()
或通过分配给
.innerHTML
)从DOM中删除DOM元素,jQuery将不会知道您已删除这些DOM元素和
.data()
信息不会被清除-它本质上只是在浪费内存空间。除了消耗一些额外内存之外,它不会造成任何伤害。如果
.data()
信息包含对其他javascript或DOM元素的引用,则可能会导致更大的内存泄漏


如果您使用的是
.data()
它创建了一种情况,在这种情况下,对于任何可能导致DOM元素被删除的内容,您都希望坚持使用jQuery方法。通常使用jQuery,您可以自由地混合/匹配普通javascript和jQuery,但这是一种不应该混合/匹配的情况。

数据存储在插件中,插件文件中有一个按钮调用事件,但当我这样做之前的所有数据,它的未定义数据存储在插件中,插件文件中有一个按钮调用事件,但当我这样做之前的所有数据,它的未定义你能发布插件代码吗?