繁体   English   中英

销毁Selectize.js实例

[英]Destroying Selectize.js instances

我正在加载应用了.selectize()的输入的ajax表单。 关闭并重新打开表单时遇到问题,因为还有一些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 ,其中我展示了构建的对象

所以,现在看到小提琴被添加了,我明白了您的意思。 我首先搜索了该count属性的文档。 我找不到 因此,接下来我搜索了源代码,因为这似乎是未公开的内容。 我可以在源代码中找到的唯一计数是以下行:

eventNS          : '.selectize' + (++Selectize.count),

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

我不会使用此属性来告诉您任何事情。 我认为可以确定您的destroy工作正常。 如果您不熟悉事件命名空间,则可以在此处了解更多信息:

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

如果您进行搜索,您会看到他在整个代码中都使用eventNS来附加事件。 jQuery在他们的代码中也做了很多事情,例如事件和数据代码。 他们使用了一个GUID变量,因此任何人在页面上加载多个jQuery实例时,这些实例都不会互相踩到脚趾。

因此,我想我现在要问的唯一一件事是,您从哪里学到了这个count属性? 如果您只是找到它并认为这意味着正在运行的实例,请记住始终与文档联系。 如果您在文档中找到了它,请立即指向我,以便我看一下它是否可以验证我发现的内容或需要进一步研究。


另外,作为奖金的提醒,我在您的小提琴中看到了这一点, input是自闭标签或也称为void元素。

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

应该只是:

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

从规格:

无效元素不能包含任何内容(由于没有结束标签,因此不能在开始标签和结束标签之间放置任何内容)。

无效元素:区域,基础,br,col,嵌入,hr,img,输入,keygen,链接,meta,param,源,track,wbr

Selectize API确实公开了以下方法:

destroy()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM