[jQuery] javascript loaded via ajax
hi i have a div whose content is loaded via ajax..that content contains html+javascript the javascript contains a function called test() when the content is loaded this function is added to the dom...now when i remove the div using remove(); i am still able to run the function test() as its still in the dom is there anyway to remove the newly added function from the dom? thanks for your help
Re: [jQuery] javascript loaded via ajax
On Wed, Jan 13, 2010 at 1:53 PM, nihal nihal.c...@gmail.com wrote: is there anyway to remove the newly added function from the dom? Wrap the code you want to be removeable in its own script element, give it an id, then remove it just like any other element. As has been discussed today, removing it doesn't mean *poof* it's gone, just that it could be removed by the garbage collector, so you'll likely be able to continue calling the function after it's been removed. See: http://jsbin.com/ixite/edit script id=removeMe type=text/javascript function hello(msg) { alert(msg); } /script script type=text/javascript $().ready(function() { hello(one); $(#removeMe).remove(); hello(two); setTimeout(hello('three'), 2500); }); /script The code gets removed from the DOM (verified using Firebug) but the function still works 2.5 seconds later. Nathan
Re: [jQuery] javascript loaded via ajax
Removing a script element just removes the script's *source code* from the DOM. It doesn't undo any actions that the script has already performed, such as defining functions or variables or creating other DOM elements. It doesn't change their availability for garbage collection at all. In your example, the hello function will never be garbage collected, because the window object has a property named 'hello' that holds a reference to the function. As Ami mentioned you can null out that window.hello property or use the delete operator on it, or better, use the (function() { /* code here */ })(); wrapper to avoid setting global properties. -Mike On Wed, Jan 13, 2010 at 2:40 PM, Nathan Klatt n8kl...@gmail.com wrote: On Wed, Jan 13, 2010 at 1:53 PM, nihal nihal.c...@gmail.com wrote: is there anyway to remove the newly added function from the dom? Wrap the code you want to be removeable in its own script element, give it an id, then remove it just like any other element. As has been discussed today, removing it doesn't mean *poof* it's gone, just that it could be removed by the garbage collector, so you'll likely be able to continue calling the function after it's been removed. See: http://jsbin.com/ixite/edit script id=removeMe type=text/javascript function hello(msg) { alert(msg); } /script script type=text/javascript $().ready(function() { hello(one); $(#removeMe).remove(); hello(two); setTimeout(hello('three'), 2500); }); /script The code gets removed from the DOM (verified using Firebug) but the function still works 2.5 seconds later. Nathan
Re: [jQuery] javascript loaded via ajax
On Wed, Jan 13, 2010 at 6:45 PM, Michael Geary m...@mg.to wrote: In your example, the hello function will never be garbage collected, because the window object has a property named 'hello' that holds a reference to the function. Thanks for the correction. Nathan