That's an interesting problem. I'll have to keep that in mind when we add in cloning support.
On Jan 13, 1:41 pm, Daniel Wachsstock <[email protected]> wrote: > Thanks for the update. One thought that just hit me was that I recommended > using the metadata plugin, which grabs $(element).data(name) for the initial > options but that gets replaced by the widget object when the plugin is run. I > wonder if that would cause problems. > > I can't see how it would, unless someone called the plugin twice on the same > element. But that would lead to all sorts of disasters with double event > handlers, etc. Bottom line: There ought to be a way to prevent instantiating > duplicate widgets on an object. > > Perhaps something as simple as (in the plugin-creating method) > } else if (!isMethodCall && !$.data(this,name).widgetName) { > $.data(this, name, new $[namespace][name](this, options)); > } > > Since no one's options object should contain a widgetName > > Danny > > --- On Tue, 1/13/09, Scott González <[email protected]> wrote: > From: Scott González <[email protected]> > Subject: [jquery-ui] Re: Issue with widget on clone > To: "jQuery UI" <[email protected]> > Date: Tuesday, January 13, 2009, 8:20 AM > > Thanks Danny, > > The widget factory will be getting much love for 1.7. I'll be in > touch with you when I'm working on it. > > On Jan 12, 2:36 pm, Danny <[email protected]> wrote:> Ticket > created,http://ui.jquery.com/bugs/ticket/3803 > > Danny > > > On Jan 12, 7:59 am, Scott González <[email protected]> > wrote: > > > > Jay, thanks for creating the test case, and thanks Danny for beating > > > me to a response :-) > > > > Danny's response is fully correct and in fact while I was looking > at > > > your example, I was thinking about how we would support this natively > > > and came to pretty much the same conclusion as Danny. If one of you > > > wants to create a feature request in Trac > > (http://ui.jquery.com/bugs/newticket> > ), we'll try to get this in for 1.7. > > > > On Jan 10, 10:44 pm, Danny <[email protected]> wrote: > > > > > The last post was mangled; I wanted to say you could use a > custom > > > > event: > > > > $.fn.cloneTheWidgets = function (){ > > > > return this.clone() // don't clone events > > > > .each(function(){ > > > > var handlers = > > $.data(this,'events')['cloneTheWidgets']; > > > > > if (handlers) for (var handler in handlers) handlers > > > > [handler].apply(this); // manually trigger the clone event > handlers > > > > } > > > > > }; > > > > > and in the widget init function: > > > > > init: function(){ > > > > var self = this; > > > > self.element.bind('cloneTheWidgets', function() > {$(this) > > > > [self.widgetName](self.options)}); > > > > ...the rest of your init > > > > > } > > > > > Though I haven't tested this. > > > > > Danny > > > > > On Jan 9, 5:01 pm, jayg <[email protected]> wrote: > > > > > > Scott, sorry for the delayed response, had to come up with > a stripped > > > > > down test page and find somewhere to put it. I have used > for my > > > > > example, I used the superbox > > onhttp://youngisrael-stl.org/wordpress/2008/08/22/extending-jquery-ui-w...> > > > > The example page can be found > > here:http://sarahhealydesign.com/widget_test.html > > > > > > What I am trying to do seems like it should be simple, and > perhaps I > > > > > am missing something obvious. Basically all I do is > attach a click to > > > > > the button, and do: > > > > > $('#experiment1') > > > > > .clone(true) > > > > > .appendTo('body') > > > > > .attr('id','experiment2'); > > > > > > I attached an alert to the superbox, so whenever you click > it, it > > > > > tells you what it thinks is its id with > > this.element.get(0).id > > > > > > You will see in the example that it always returns > > experiment1 for the> > > > id. Any help is much appeciated! > > > > > > -j > > > > > > On Jan 8, 11:20 am, Scott González > <[email protected]> wrote: > > > > > > > Can you provide a demo page showing your problem? > > > > > > > On Jan 7, 10:20 pm, jayg > <[email protected]> wrote: > > > > > > > > I have a custom widget built on jquery UI that I > am running into an > > > > > > > odd issue with. Everything works as I want on > > initial use, but when I> > > > > > do a clone(true) on the widget and append > it to > > another element, the> > > > > > cloned version does not seem to have a proper > > handle on where it lives> > > > > > in the dom - it returns the old id upon > calling > this.element.get > > > > > > > (0).id. Do I need to do something, maybe call > > some method, to update> > > > > > this information w/in the widget, or is > this only > ever set upon > > > > > > > initial creation? I did try calling > > $('#myItem').myWidget('init'),> > > > > > but no dice. Any thoughts? > Something obvious > > I am missing? --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
