首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >销毁Selectize.js实例

销毁Selectize.js实例
EN

Stack Overflow用户
提问于 2015-12-15 18:37:34
回答 2查看 3.4K关注 0票数 2

我正在加载一个ajax表单,其中包含应用.selectize()的输入。当我关闭并重新打开表单时,我会遇到一些问题,因为还有一些选择化构造函数的实例仍然存在。

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

我试过这样做:

代码语言:javascript
复制
instance1[0].selectize.destroy();
instance2[0].selectize.destroy();

分配这样的变量:

代码语言:javascript
复制
instance1 = $('#preferences_sport').selectize({
  //custom code
});

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

Selectize.count还在继续发展,我不知道从这里往哪里走。

这里是一个JSFiddle,我在这里展示了构建对象

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-16 20:24:31

所以我明白你在说什么,因为小提琴是加起来的。首先,我搜索了该count属性的文档。我找不到它。接下来,我搜索了源代码,因为这似乎是一些没有文档的东西。我在源代码中唯一能找到的计数是以下一行:

代码语言:javascript
复制
eventNS          : '.selectize' + (++Selectize.count),

所以这基本上解释了这一点。这个计数虽然对调用的每个元素都会增加,但并不是运行小部件的当前计数。它是一个内部属性,编写这篇文章的人使用它作为事件命名空间的GUID。因此,例如,当您调用destroy时,他只能删除特定于小部件实例的事件。

我不会用这个财产告诉你任何事。我认为假设您的destroy运行良好是安全的。如果您不熟悉事件命名空间,可以在这里阅读更多有关它的内容:

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

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

所以,我想我现在要问你的唯一问题是,你是从哪里了解到这个伯爵财产的?如果您刚刚找到了它,并假定它意味着这是一个正在运行的实例的计数,那么请记住始终检查文档。如果您在文档中找到了它,那么请指向现在,这样我就可以查看一下,看看它是否验证了我找到了什么,或者需要更多的查询。

另外,作为奖金提示,我在你的小提琴中看到了这一点,input是一个自动关闭标签,也被称为“空元素”。

代码语言:javascript
复制
<input type="text" value="Calgary, Edmonton" class="selectize_this"></input>

应该是:

代码语言:javascript
复制
<input type="text" value="Calgary, Edmonton" class="selectize_this" />

从规范中:

Void元素不能有任何内容(因为没有结束标记,所以在开始标记和结束标记之间不能放置任何内容)。 空隙元素:面积,基底,br,col,嵌入,hr,img,输入,keygen,link,meta,param,源,声道,wbr

票数 2
EN

Stack Overflow用户

发布于 2015-12-16 20:24:40

选择API接口确实公开了以下方法:

代码语言:javascript
复制
destroy()

销毁控件并取消绑定事件侦听器,以便垃圾收集。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34296913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档