Add this to your destroy method to call the default behaviour:
$.widget.prototype.apply(this, arguments);
Which would do this:
this.element.removeData(this.widgetName)
.removeClass(this.widgetBaseClass + '-disabled' + ' ' +
this.namespace + '-state-disabled')
.removeAttr('aria-disabled');
The removeData("myWidget") is the important pice you were missing.
Jörn
On Thu, Apr 23, 2009 at 8:13 PM, Aaron <[email protected]> wrote:
>
> My understanding is that when writing my own extensions to ui, Iuse
> the destroy method to revert the root widget element to the state it
> was in before _init().
>
> So, I do that like this:
>
> (function($) {
> $.widget("ui.myWidget", {
>
> _init: function() {
> // add some needed classes, bind events etc.
> },
> someOtherMethod(): function() {
> // do some other stuff
> },
>
> destroy: function() {
> // take off all classes I added in _init()
> // unbind events from this.element
> // do whatever else to revert element back to pre _init()
> return this;
> }
> ....etc...
>
> So, I assume this is expected behavior in order to comply with UI API:
>
> var node= $('#my-widget-node'); // get the root node once
>
> node.myWidget(); // creates an instance of myWidget
>
> node.myWidget('destroy'); // reverts node back to original node before
> calling widget
>
> node.myWidget(); // creates an instance of myWidget (again) on the
> node
>
> The problem is, that once I call destroy, I cannot create the widget
> again. _init() never gets called. I assume the ui core code is
> preventing me from calling init again, but I cannot figure out why or
> where. I looked at ui.accordion and it works as expected. I looked at
> its destroy method and it does nothing different than mine that I
> could see, but then again I am not great at reading other people's
> code.
>
> Any ideas what I am doing wrong?
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"jQuery UI" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/jquery-ui?hl=en
-~----------~----~----~----~------~----~------~--~---