Javascript jQuery插件实例并删除/销毁它们?

Javascript jQuery插件实例并删除/销毁它们?,javascript,jquery,Javascript,Jquery,我有一种情况,我在页面上的插件会被引用多次。问题是调用插件的元素将被动态创建。然后移除等等。。。比如说 我有一个div结构,它创建了一些子元素 一,。我在这些子项上添加插件实例。他们做了一些魔术等 二,。用户单击一个按钮,就会创建一组新的子元素——我创建插件实例 现在——在上面的“i”点中创建的那些会发生什么?我没有使用“小部件”,所以我没有销毁方法 所以,我可以调用子元素,循环遍历它们并销毁数据元素等等。。阿拉 $.each('[some_class_that_represents_all_e

我有一种情况,我在页面上的插件会被引用多次。问题是调用插件的元素将被动态创建。然后移除等等。。。比如说

  • 我有一个div结构,它创建了一些子元素
  • 一,。我在这些子项上添加插件实例。他们做了一些魔术等

    二,。用户单击一个按钮,就会创建一组新的子元素——我创建插件实例

    现在——在上面的“i”点中创建的那些会发生什么?我没有使用“小部件”,所以我没有销毁方法

    所以,我可以调用子元素,循环遍历它们并销毁数据元素等等。。阿拉

    $.each('[some_class_that_represents_all_elements]', function(a,b){
         $(b).data('PLUGIN_NAME') = null; // or
         delete $(b).data('PLUGIN_NAME'); // or
         $(b).data('PLUGIN_NAME', null);
    })
    

    如果元素从DOM中删除,插件实例也会被删除/清理吗?

    jQuery默认情况下会在调用$(el).remove()方法时清理使用$(el).data()存储的任何数据

    如果使用$(el).detach(),则会保留数据

    jQuery确保在删除DOM元素时删除数据 通过jQuery方法,以及当用户离开页面时


    所以js是正确的引用计数,假设没有任何东西可以处理你的插件,它将被收集。我会使用chrome调试工具中的profiler(Profiles选项卡),看看是什么。检查插件API文档,看看它是否有
    .destroy()
    方法。例如,大多数jQueryUI小部件都会这样做,我这里不使用数据,但我相信jQuery会自动将插件引用存储在数据对象中。我希望在删除dom元素时将它们删除。如果是这样的话,我想它会自动清理,不是吗?这在很大程度上取决于“插件”。“jquery插件”经常被用作“添加到jquery.prototype的方法”的同义词。该方法实际上做什么是一个大问题,根本不需要与$(el).data()有任何关系。是的,如果它们存储在.data()中的话它们将被自动清理。