Recommended way to remove events on destroy with j

2019-07-20 08:48发布

I'm using the jQuery UI Widget Factory to build a jQuery plugin.

My plugin binds custom events to the window...

_subscribe: function() {
  $(window).on("dragger.started", function() { ... });
}

I am wondering how to go about removing these events, when a particular instance of the plugin is destroyed. If I use...

destroy: function() {
  $(window).off("dragger.started");
}

...then that will mess up any other instances of the plugin on the page, as it will remove all "dragger.started" events.

What is the recommended way to go about destroying only those events that are associated with an instance of the plugin?

Thanks (in advance) for your help.

2条回答
Root(大扎)
2楼-- · 2019-07-20 09:25

You can bind multiple namespaces in an event. So assign your instance an id like

//this.id = 'dragger_' + guid_or_static_count
$(window).on("dragger.started." + this.id, function() { ... });

And later

$(window).off('dragger.' + this.id);

See this fiddle

查看更多
家丑人穷心不美
3楼-- · 2019-07-20 09:47

What are you using to get rid of the instance? jQuery remove() will remove bound events, I believe.

查看更多
登录 后发表回答