销毁Selectize.js实例

时间:2015-12-15 18:37:35

标签: javascript jquery ajax selectize.js

我正在加载一个带有我应用的输入的ajax表单.selectize()to。当我关闭并重新打开表单时遇到问题,因为存在仍然存在的Selectize构造函数的实例。

关闭表单时有没有办法删除这些实例?我可以通过查看Selectize.count下DOM中的firebug来打开和关闭表单时看到这些对象。如何访问这些实例并将其销毁?

我试过这个:

instance1[0].selectize.destroy();
instance2[0].selectize.destroy();

分配如下变量:

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

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

Selectize.count继续积累,我不知道从哪里开始。

这是JSFiddle,其中显示了构建的对象

2 个答案:

答案 0 :(得分:2)

所以我现在看到你说的是小提琴被添加了。我开始在文档中搜索该count属性。我无法找到它。接下来我搜索了源代码,因为它似乎是一些无证件的东西。我在源代码中找到的唯一计数是这一行:

returned_at

所以基本上这解释了它。对于调用此元素的每个元素确实增加的计数不是正在运行小部件的当前计数。它是一个内部属性,编写它的人用作事件名称空间的GUID。因此,例如,当您调用destroy时,他只能删除特定于该窗口小部件实例的事件。

我不会使用此属性告诉您任何事情。我认为可以安全地假设您的eventNS : '.selectize' + (++Selectize.count), 工作正常。如果您不熟悉事件命名空间,可以在此处阅读更多相关信息:

https://api.jquery.com/event.namespace/

您可以看到他在整个代码中使用destroy来附加事件(如果您搜索它)。 jQuery在他们的代码中也为这些事件和数据代码提供了很多东西。他们有一个GUID变量,所以任何人在页面上加载多个jQuery实例,实例都不会踩到彼此的脚趾。

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

另外作为奖励,我在你的小提琴中看到了这个,eventNS是一个自我结束的标签或者也被称为空白元素。

input

应该是:

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

来自规范:

  

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

     

Void元素:area,base,br,col,embed,hr,img,input,keygen,   link,meta,param,source,track,wbr

答案 1 :(得分:1)

Selectize API确实暴露了以下方法:

com.ibm.xsp.acl.NoAccessSignal
  

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