我正在加载一个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,我在这里展示了构建对象
发布于 2015-12-16 20:24:31
所以我明白你在说什么,因为小提琴是加起来的。首先,我搜索了该count属性的文档。我找不到它。接下来,我搜索了源代码,因为这似乎是一些没有文档的东西。我在源代码中唯一能找到的计数是以下一行:
eventNS : '.selectize' + (++Selectize.count),所以这基本上解释了这一点。这个计数虽然对调用的每个元素都会增加,但并不是运行小部件的当前计数。它是一个内部属性,编写这篇文章的人使用它作为事件命名空间的GUID。因此,例如,当您调用destroy时,他只能删除特定于小部件实例的事件。
我不会用这个财产告诉你任何事。我认为假设您的destroy运行良好是安全的。如果您不熟悉事件命名空间,可以在这里阅读更多有关它的内容:
https://api.jquery.com/event.namespace/
您可以看到他在整个代码中使用该eventNS来附加事件,如果您搜索它的话。jQuery在他们的代码中也会这样做,比如在他们的事件和数据代码中。它们有一个GUID变量,这样任何在页面上加载多个jQuery实例的人,都不会踩到彼此的脚。
所以,我想我现在要问你的唯一问题是,你是从哪里了解到这个伯爵财产的?如果您刚刚找到了它,并假定它意味着这是一个正在运行的实例的计数,那么请记住始终检查文档。如果您在文档中找到了它,那么请指向现在,这样我就可以查看一下,看看它是否验证了我找到了什么,或者需要更多的查询。
另外,作为奖金提示,我在你的小提琴中看到了这一点,input是一个自动关闭标签,也被称为“空元素”。
<input type="text" value="Calgary, Edmonton" class="selectize_this"></input>应该是:
<input type="text" value="Calgary, Edmonton" class="selectize_this" />从规范中:
Void元素不能有任何内容(因为没有结束标记,所以在开始标记和结束标记之间不能放置任何内容)。 空隙元素:面积,基底,br,col,嵌入,hr,img,输入,keygen,link,meta,param,源,声道,wbr
发布于 2015-12-16 20:24:40
https://stackoverflow.com/questions/34296913
复制相似问题