首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问元素的内部expando id

访问元素的内部expando id
EN

Stack Overflow用户
提问于 2012-12-29 04:05:43
回答 1查看 166关注 0票数 0

我在删除我不想要的事件处理程序时遇到了一些问题,我想用html元素的expando id来命名事件绑定。

代码语言:javascript
复制
function SomeWidget(el) {
   $(document).on('handler.MY_EXPANDO_ID', this.handler.bind(this));
};
var widget = new SomeWidget($(sometargetelement));

没有唯一标识符的问题是,目前我有相同的名称空间,当我同时有两个小部件时,这会搞砸,其中一个被删除,它删除了这两个对象的处理程序。

问题1)如何访问元素的内部expando id?问题2)有没有更好的方法?Function.bind !==函数,该函数使基于实际方法指针的移除成为可能

我使用的是jQuery 1.8.3

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-29 04:15:55

每当创建小部件时,jQuery UI的小部件工厂都会递增一个计数器。正是由于这个原因,它们才有了一个可用的eventNamespace属性。你可以完成同样类型的事情:

代码语言:javascript
复制
function SomeWidget(el) {
    SomeWidget.instances++;
    var eventNamespace = ".SomeWidget" + SomeWidget.instances;

    $(el).on("handler" + eventNamespace, ...);
}
SomeWidget.instances = 0;

这将在每次创建新的SomeWidget时增加实例数。在内部,它将可以访问可用于绑定/解除绑定事件的eventNamespace

如果您需要访问小部件之外的内容,可以将eventNamespace作为数据存储在元素上:

代码语言:javascript
复制
$(el).data("eventNamespace", eventNamespace);

但是,如果您使用相同的元素创建了小部件的多个实例,则会覆盖这些内容。

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

https://stackoverflow.com/questions/14075117

复制
相关文章

相似问题

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