Right on. I agree and have changed the name of the plugin to
copyEvents and added the cloneWithEvents method.

Update links:
You can find this plugin in SVN:
http://jquery.com/dev/svn/trunk/plugins/copyEvents/copyEvents.js?format=txt

You can run the unit tests here:
http://brandon.jquery.com/plugins/copyEvents/test/unit.html

--
Brandon Aaron


On 1/25/07, John Resig <[EMAIL PROTECTED]> wrote:
> Ahhh... I see, that's pretty useful.
>
> I think I would be inclined to use the following naming convention:
> - copyEvents
> - copyEventsTo
> - cloneWithEvents
>
> This way "clone" is always associated with cloning elements.
> Additionally, adding in the "From" seems sort of redundant (it's not
> used elsewhere in jQuery (.appendFrom?)
>
> Finally, now that I see what your goal is, I think this would be an
> interesting goal:
>
> $("#foo").load("some.html",function(){
>   $(this).copyEvents( true, "#otherfoo" );
> });
>
> And this would do a deep traversal of the contents of #foo, attempting
> to copy over events from similar elements in #otherfoo.
>
> Of course, an ultimate goal would be:
>
> $("a").click(...);
> $("li").addClass("test");
>
> $("#foo").liveLoad( "foo.html" );
>
> and having all the a elements receive that particular event handler,
> and all li elements receive a class of test.
>
> Of course, the technical aspects behind this are quite daunting, but
> it would certainly be a cool effect.
>
> --John
>
> On 1/25/07, Brandon Aaron <[EMAIL PROTECTED]> wrote:
> > Duh! I'll add the cloneWithEvents() method to the plugin shortly. I
> > was thinking how to make the plugin as flexible as possible and allow
> > for other use-cases instead of just with clone. Lets say for example
> > that you have an unordered list and each list item has events. Then
> > you add some more list items via AJAX but need to rebind the events.
> > Just use the cloneEventsFrom method.
> >
> > Thanks John ... I believe that completes this plugin.
> >
> > --
> > Brandon Aaron
> >
> > On 1/25/07, John Resig <[EMAIL PROTECTED]> wrote:
> > > I think this is a little different from what was originally asked for.
> > > Something along the lines of:
> > >
> > > jQuery.fn.cloneWithEvents = function( deep ) {
> > >   var old = this;
> > >   return this.clone( deep ).cloneEventsFrom( old );
> > > };
> > >
> > > This way you can do the cloning (and the event cloning) all in one 
> > > operation:
> > >
> > > $("div.toggle").cloneWithEvents().appendTo("#container");
> > >
> > > --John
> > >
> > > On 1/25/07, Brandon Aaron <[EMAIL PROTECTED]> wrote:
> > > > I've noticed several times on the list people asking why .clone()
> > > > doesn't clone the events along with the elements. No more worries ...
> > > > now you can clone those events if you need too!
> > > >
> > > > var $elements = $('.elements');
> > > > $elements
> > > >     .clone()
> > > >     .cloneEventsFrom($elements);
> > > >
> > > > There is also a .cloneEventsTo() which acts like .appendTo().
> > > >
> > > > var $elements = $('.elements');
> > > > var $clonedElements = $elements.clone();
> > > > $elements.cloneEventsTo($cloneElements);
> > > >
> > > > You can find this plugin in SVN:
> > > > http://jquery.com/dev/svn/trunk/plugins/cloneEvents/cloneEvents.js?format=txt
> > > >
> > > > You can run the unit tests here:
> > > > http://brandon.jquery.com/plugins/cloneEvents/test/unit.html
> > > >
> > > > --
> > > > Brandon Aaron
> > > >
> > > > _______________________________________________
> > > > jQuery mailing list
> > > > [email protected]
> > > > http://jquery.com/discuss/
> > > >
> > >
> > > _______________________________________________
> > > jQuery mailing list
> > > [email protected]
> > > http://jquery.com/discuss/
> > >
> >
> > _______________________________________________
> > jQuery mailing list
> > [email protected]
> > http://jquery.com/discuss/
> >
>
> _______________________________________________
> jQuery mailing list
> [email protected]
> http://jquery.com/discuss/
>

_______________________________________________
jQuery mailing list
[email protected]
http://jquery.com/discuss/

Reply via email to