Javascript 销毁Selectize.js实例

Javascript 销毁Selectize.js实例,javascript,jquery,ajax,selectize.js,Javascript,Jquery,Ajax,Selectize.js,我正在加载一个ajax表单,其中包含我应用的输入。我在关闭和重新打开表单时遇到问题,因为仍然存在Selectize构造函数的实例 当我关闭表单时,是否有方法删除这些实例?在打开和关闭表单时,通过在DOM中的Selectize.count下查看firebug,我可以看到这些对象不断累积。如何访问这些实例并销毁它们 我试过这个: instance1[0].selectize.destroy(); instance2[0].selectize.destroy(); 按如下方式分配变量: instan

我正在加载一个ajax表单,其中包含我应用的输入。我在关闭和重新打开表单时遇到问题,因为仍然存在Selectize构造函数的实例

当我关闭表单时,是否有方法删除这些实例?在打开和关闭表单时,通过在DOM中的Selectize.count下查看firebug,我可以看到这些对象不断累积。如何访问这些实例并销毁它们

我试过这个:

instance1[0].selectize.destroy();
instance2[0].selectize.destroy();
按如下方式分配变量:

instance1 = $('#preferences_sport').selectize({
  //custom code
});

instance2 = $('#preferences_sport').selectize({
  //custom code
});
Selectize.count继续增加,我不知道从这里开始该怎么做


在这里,我展示了正在构建的对象

,因此我看到了添加小提琴后您所说的内容。我首先在文档中搜索count属性。我找不到它。所以接下来我搜索了源代码,因为这似乎是一些未记录的东西。我能在源代码中找到的唯一计数是这一行:

eventNS          : '.selectize' + (++Selectize.count),
基本上这就是原因。虽然调用的每个元素的计数都会增加,但它不是当前运行的小部件的计数。它是一个内部属性,写这篇文章的人使用它作为事件名称空间的GUID。例如,当您调用destroy时,他只能删除特定于该小部件实例的事件

我不会用这个财产告诉你任何事情。我认为可以安全地假设您的
destroy
工作正常。如果您不熟悉事件名称空间,可以在此处阅读更多信息:

如果您搜索,您可以看到他在整个代码中使用
events
来附加事件。jQuery在代码中也会这样做,比如在事件和数据代码中。它们有一个使用的GUID变量,因此在一个页面上加载多个jQuery实例的任何人,这些实例都不会互相攻击

所以我想我现在唯一要问你的是,你从哪里知道这个伯爵财产的?如果您刚刚找到它,并假设这意味着这是一个正在运行的实例计数,请记住始终检查文档。如果你在文档中找到了它,那么请告诉我现在的位置,这样我就可以看一看,看看它是否验证了我的发现,或者需要更多的研究


另外,作为一个额外的提醒,我在你的小提琴中看到了这一点,
input
是一个自动关闭的标签,或者也称为void元素

<input type="text" value="Calgary, Edmonton" class="selectize_this"></input>

应该是:

<input type="text" value="Calgary, Edmonton" class="selectize_this" />

根据规范:

Void元素不能有任何内容(因为没有结束标记,没有 内容可以放在开始标记和结束标记之间)

无效元素:区域、基础、br、col、嵌入、hr、img、输入、键根、, 链接、元、参数、源、跟踪、wbr

Selectize不公开以下方法:

destroy()
销毁控件并取消绑定事件侦听器,以便可以对其进行垃圾收集


你能创造一个小提琴来复制这个问题吗?因为从我阅读文档中可以看出,你做的似乎是正确的。奇怪的是,我从来没有见过一个jquery插件,它强迫你在它粘贴在元素上的对象上调用函数。我认为它可以做到这一点,因此jquery不是必需的,但文档说它是必需的。@AtheistP3ace添加了一个JSFIDLE,显示在模式窗口打开和关闭时对象的构建。