First of all, thank you for a very detailed answer. From that arises
one more question: when you say event handlers are not remove do you
mean the event handlers that where added dynamically with commands
such as Element.observed and window.addEventListener won't be removed,
do you also talk about methods that are creates as part of HTML syntax
such as <a href="#" onclick="javascript:DoSomething()">? as most of
the dynamic content I create is using he Template class of prototype
where actions on those objects are taken from links populated as I've
described above (using an HTML within the Template). Will these event
invocations also provide a problem and need to be tracked?

Thank you,


On Aug 2, 10:29 pm, "T.J. Crowder" <t...@crowdersoftware.com> wrote:
> Hi,
>
> Yes, it will, removing an element (via Prototype or directly with
> Node.removeChild) removes that element and its children.  Which is
> just as well, as the children would have no where to be otherwise.
>
> Note that neither Prototype nor the underlying DOM methods will
> automatically remove event handlers from the removed elements, which
> can mean that memory remains in use even though the element isn't on
> the page anymore.  You want to track what children you have event
> handlers on and remove the handlers as well.  This is much easier if
> you're using event delegation to keep the number of handlers to a
> minimum.
>
> HTH,
> --
> T.J. Crowder
> tj / crowder software / com
> Independent Software Engineer, consulting services available
>
> On Aug 2, 11:25 pm, Kostil <kostia.iva...@gmail.com> wrote:
>
>
>
> > Hi All,
>
> > I am wondering if remove() method executed on top DIV (parent DIV
> > element) will automatically remove the children of this element (as in
> > remove them from the page and memory if appropriate)? Currently, I am
> > doing the following to remove the children:
>
> > $('topdiv').childElements().each(function(e) {
> >         RemoveChildren(e);
> >     });
>
> > Where RemoveChildren(e) defined as:
>
> > function RemoveChildren(e)
> > {
> >     if (e.childElements().length > 0)
> >     {
> >         e.childElements().each(function(ee) {
> >             RemoveChildren(ee);
> >         });
> >     }
> >     e.remove();
>
> > }
>
> > The method above seems to work slow especially on IE where very
> > visible lag is apparent when executing this type of cleanup.
>
> > Thank you in advance,
--~--~---------~--~----~------------~-------~--~----~
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 
prototype-scriptaculous+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to