Just a little question : Can I do in the same way like before, and just replace the innerHTML code with a kind of thing like next and insert ? Like an insert into a div ?
On 6 nov, 17:26, jak0lantash <[EMAIL PROTECTED]> wrote: > 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 -~----------~----~----~----~------~----~------~--~---