Hi,

You're right !!!
It works fine... Perfect, thank you so much. I though the fault was
comming from the innerHTML way, but I hasn't known about this next/
insert thing.
I think I'm not so good in JavaScript ;)
Just a test file : http://www.letroquet.eu/tests/module_inverse.html
Now, I have to modify all my code to implement this method.

Thank you.

I'll post a link to the site when it'll be finished...

Take care

On 6 nov, 15:24, "T.J. Crowder" <[EMAIL PROTECTED]> wrote:
> Hi,
>
> > Yes I know this possibility. I though about it, but I can not use
> > it... and I don't think the bind problem will be fix in that way ;)
>
> I'm pretty sure it will.  Did you try it?  I did a trivial test, and
> it worked fine.  Here's my version of moveDown, which differs slightly
> from Rob's as it uses Prototype-isms:
>
> function moveDown(elm)
> {
>     var next;
>
>     elm = $(elm);
>     next = elm.next();
>     if (next)
>     {
>         elm.remove();
>         next.insert({after: elm});
>     }
>
> }
>
> That happily moves an element to after its next sibling, if it has
> one, retaining its event handlers.  (IE6, FF3, Opera9, Safari 3 for
> Windows.)  Complete example:http://pastie.org/308719
>
> The problem, as you correctly determined, is that when you use
> innerHTML, you're creating *new* element instances to represent the
> HTML.  If you just move the elements around, you're not creating new
> instances, and the event handlers remain hooked up.
>
> If you really want to keep using your innerHTML approach, you'll have
> to unhook the handlers before moving things (memory leak otherwise),
> then re-hook them afterward.  Note that when re-hooking them, you have
> to give the browser a moment to process them using Function.defer or
> some such; details on the unofficial 
> wiki:http://proto-scripty.wikidot.com/prototype:tip-scripting-dynamically-...
>
> But much easier just to move them.
>
> HTH,
> --
> T.J. Crowder
> tj / crowder software / com
>
> On Nov 6, 1:35 pm, jak0lantash <[EMAIL PROTECTED]> wrote:
>
> > Hi,
>
> > Thank you for your respons.
> > Yes I know this possibility. I though about it, but I can not use
> > it... and I don't think the bind problem will be fix in that way ;)
> > Because, if in your example, if I take the module-0 code and put it
> > down between the 1 and 2. The binds will be broken too, aren't they ?
>
> > I explain, I wanna use these module on a page like that : at the left
> > side, several modules (3 per default), at the middle, just the web
> > pagen at the right side, several modules (3 per default). About
> > module, I mean a kind of widget.
> > For every actions on a module, I use two id to identify : a position
> > id and a module id.
> > The position id is use for every move action : down, up and delete. I
> > send an Ajax request. The PHP recognize the position, and the
> > concerned (with an array job) decide if the action is allowed, and
> > then the JavaScript finish the job.
> > The module id is use for every click or refresh action. The same thing
> > but to matter on the position.
> > At every moment, I have to now which module is at what position, in
> > PHP. Therefore, I have a div container for the position and a div
> > container for the module. So if I insert something somewhere, the
> > positions ids will be wrong...
> > I don't know if you understand what I wanna mean. Here is an example :
>
> > <div id="position-1"> <!-- BEGIN - div container for the position 1 --
>
> >   <div id="module-A"> <!-- BEGIN - div container for the module A -->
> >     text and javascript for the widget A
> >   </div> <!-- BEGIN - div container for the module A -->
> > </div> <!-- BEGIN - div container for the module 1 -->
>
> > <div id="position-2"> <!-- BEGIN - div container for the position 2 --
>
> >   <div id="module-B"> <!-- BEGIN - div container for the module B -->
> >     text and javascript for the widget B
> >   </div> <!-- BEGIN - div container for the module B -->
> > </div> <!-- BEGIN - div container for the module 2 -->
>
> > If I insert something between those two modules, the positions ids
> > will be wrong...
> > Do you understand ?
>
> > Thanks, bye
>
> > On 6 nov, 01:22, RobG <[EMAIL PROTECTED]> wrote:
>
> > > I think that your solution is way to complex for what you are doing.
> > > If all you want to do is swap the position of the divs, insert the one
> > > that you want to move down as the next sibling of the one below it (if
> > > there is one) - i.e. the nextSibilng of its nextSibling.
>
> > > e.g.
>
> > > <script type="text/javascript">
>
> > > function moveDown(el) {
> > >   var div = el.parentNode;
> > >   var nextSib = div.nextSibling;
> > >   while (nextSib && nextSib.nodeType != 1) {
> > >     nextSib = nextSib.nextSibling;
> > >   }
> > >   if (nextSib) {
> > >     div.parentNode.insertBefore(div, nextSib.nextSibling);
> > >   }
>
> > > }
>
> > > </script>
>
> > > <div id="container">
> > >  <div id="module-0">
> > >   <button onclick="moveDown(this);">Move Down A</button>
> > >  </div>
>
> > >  <div id="module-1">
> > >   <button onclick="moveDown(this);">Move Down B</button>
> > >  </div>
>
> > >  <div id="module-2">
> > >   <button onclick="moveDown(this);">Move Down C</button>
> > >  </div>
> > > </div>
>
> > > --
> > > Rob
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to