Hi,
FWIW, I think you can avoid the branching.
To remember an element's position and then remove it:
* * * *
function saveAndRemoveElement(elm) {
var saved;
saved = {
elm: elm,
parent: elm.parentNode,
next: elm.nextSibling // <= May be undefined, that's okay
};
elm.remove();
return saved;
}
* * * *
To restore it:
* * * *
function restoreSavedEelement(saved) {
saved.parent.insertBefore(saved.elm, saved.next);
}
* * * *
Node#insertBefore inserts at the end of the second parameter is
undefined.
The only Prototype-ism in the above is elm.remove().
Hope this helps,
--
T.J. Crowder
tj / crowder software / com
Independent Software Engineer, consulting services available
On Feb 18, 8:40 pm, Aitor Garay-Romero <[email protected]> wrote:
> Hi there!
>
> I need to remove an arbitray element from the DOM and add it later
> exactly to the same point in the DOM. I wonder is there is a direct
> way to achieve this. Right now i have to check wether the element has
> a previous sibling or directly a parent and remember this information
> to add it back.
>
> When i remove i do something like:
>
> var e = $( ...),
> previousSiblings = e.previousSiblings();
>
> if( previousSiblings.size() > 0) {
> this._insertPoint = previousSiblings.first(); // it has a sibling
> } else {
> this._insertPoint = e.parentNode; // no sibling, use parent as
> reference
> this._insertPointIsParent = true;
> }
>
> And to add it back:
>
> var e = $( ...);
>
> if( this._insertPointIsParent) {
> this._insertPoint.insert( { top: e});
> } else {
> this._insertPoint.insert( { after: e});
> }
>
> So, there is any direct way to do this or i have to use this
> algorithm?
>
> Thanks!
>
> /AITOR
--~--~---------~--~----~------------~-------~--~----~
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 [email protected]
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
-~----------~----~----~----~------~----~------~--~---