Forum: Ruby on Rails Relocating an HTML element without rerendering anything?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
3d197df430dbfd0d0b11f23b0a8d3ec9?d=identicon&s=25 Daniel Smedegaard Buus (Guest)
on 2007-03-26 16:22
(Received via mailing list)
Hey :)

As some of you may know, I'm working on a drag-and-drop AJAX tree
manager. I've got it pretty much done now, except for the dropping of
one node onto another. I can relocate and save the node fine, but I'd
like to be able to move the node and have it placed inside a specific
inner div to where it's dropped without having to reload the place
it's dropped. As the drop target is a node, too, and might be expanded
at any number of levels, refreshing that node would kill this state,
leaving it either collapsed, or expanded at just one level.

On my drop_receiving_element, I'd like to be able to say something
like:

  :success    => "Element.move_to(element_id, target_id)"

Is there some way I can do this?

Thanks in advance,
Daniel :)
3d197df430dbfd0d0b11f23b0a8d3ec9?d=identicon&s=25 Daniel Smedegaard Buus (Guest)
on 2007-03-26 17:41
(Received via mailing list)
No worries, found this:

  /*
  This script is copyright (c) 2006 Elliot Swan under the
  Creative Commons Attribution-ShareAlike 2.5 license:
  http://creativecommons.org/licenses/by-sa/2.5/

  More information on this script can be found at:
  http://www.elliotswan.com/2006/04/12/move-and-copy/
  */

  var Move =  {

    copy  :   function(e, target)  {
        var eId      = $(e);
        var copyE    = eId.cloneNode(true);
        var cLength  = copyE.childNodes.length -1;
        copyE.id     = e+'-copy';

        for(var i = 0; cLength >= i;  i++)  {
        if(copyE.childNodes[i].id) {
        var cNode   = copyE.childNodes[i];
        var firstId = cNode.id;
        cNode.id    = firstId+'-copy'; }
        }
        $(target).appendChild(copyE);
        },
    element:  function(e, target, type)  {
        var eId =  $(e);
        if(type == 'move') {
           $(target).appendChild(eId);
        }

        else if(type == 'copy')  {
           this.copy(e, target);
        }
        }
  }
This topic is locked and can not be replied to.