问题
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.
回答1:
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
回答2:
What are you using to get rid of the instance? jQuery remove() will remove bound events, I believe.
来源:https://stackoverflow.com/questions/13907368/recommended-way-to-remove-events-on-destroy-with-jquery-ui-widget-factory