Question

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.

Was it helpful?

Solution

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

OTHER TIPS

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top