<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>.NET Tips and Tricks &#187; jQuery</title>
	<atom:link href="http://kossovsky.net/index.php/tag/jquery/feed/" rel="self" type="application/rss+xml" />
	<link>http://kossovsky.net</link>
	<description>C# Code Snippets, ASP.NET Code Samples, .NET Tips and Tricks</description>
	<lastBuildDate>Thu, 13 May 2010 13:02:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>jTemplates &#8211; jQuery Template Engine</title>
		<link>http://kossovsky.net/index.php/2009/10/jtemplates-jquery-template-engine/</link>
		<comments>http://kossovsky.net/index.php/2009/10/jtemplates-jquery-template-engine/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 22:46:51 +0000</pubDate>
		<dc:creator>Xander</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[c-sharp]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[dhtml]]></category>
		<category><![CDATA[dom template]]></category>
		<category><![CDATA[dynamic template]]></category>
		<category><![CDATA[endless event]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[event handlers]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[javascript library]]></category>
		<category><![CDATA[javascript templates]]></category>
		<category><![CDATA[jquery templates]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[js template]]></category>
		<category><![CDATA[net c#]]></category>
		<category><![CDATA[rapid web development]]></category>
		<category><![CDATA[render]]></category>
		<category><![CDATA[server side code]]></category>
		<category><![CDATA[side requests]]></category>
		<category><![CDATA[support parameters]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[template engine]]></category>
		<category><![CDATA[templates]]></category>
		<category><![CDATA[time manipulation]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[usable features]]></category>
		<category><![CDATA[web template]]></category>

		<guid isPermaLink="false">http://kossovsky.net/?p=789</guid>
		<description><![CDATA[jTemplates is a template engine for JavaScript, wich is wraped in a jQuery Plugin.
The syntax is very simple and  intuitive. It's support parameters, includes, if/else, loops, JavaScript functions and many other nice and usable  features.<br /><div><img src="http://kossovsky.net/wp-content/plugins/gd-star-rating/gfx.php?value=4.9" /></div><div>Rating: 4.9/<strong>5</strong> (10 votes cast)</div><br /><a target="_blank" href="http://www.gdstarrating.com/"><img src="http://kossovsky.net/wp-content/plugins/gd-star-rating/gfx/powered.png" border="0" width="80" height="15" /></a><br />


Related posts:<ol><li><a href='http://kossovsky.net/index.php/2009/07/ie-memory-leak-jquery-garbage-collector/' rel='bookmark' title='Permanent Link: IE Memory Leak &#8211; jQuery Fix'>IE Memory Leak &#8211; jQuery Fix</a></li>
<li><a href='http://kossovsky.net/index.php/2009/07/script-as-blocking-element-and-dynamic-script-loading-using-document-write/' rel='bookmark' title='Permanent Link: Script as blocking element and dynamic script loading using document.write'>Script as blocking element and dynamic script loading using document.write</a></li>
<li><a href='http://kossovsky.net/index.php/2009/07/function-context-and-apply-function/' rel='bookmark' title='Permanent Link: Javascript function context, &#8220;apply&#8221; method and lost &#8220;this&#8221; object'>Javascript function context, &#8220;apply&#8221; method and lost &#8220;this&#8221; object</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>About a year ago i had to architucture some web application with a very rich client side UI.</p>
<p>ASP.NET was an easy choise for a server side code, but what about client side ?<br />
The heavy viewstate, endless event handlers and infinity number of server side requests just to make the GUI  friendly &#8211; well, it just didn&#8217;t sound as a proper way to do it.</p>
<p><span id="more-789"></span>So, what do we have ?<br />
.NET as a server side platform, but despite  all it&#8217;s powerful abilities it has nothing to do with client side. At the end of the day all those fancy control are just HTML and JavaScript.</p>
<p> JavaScript is still the engine that runs at the client side and it&#8217;s great, but we all know how many lines of code we have to write and time to spend to make it fast, modular and cross browser.</p>
<p><a title="jQuery" href="http://jquery.com/" target="_blank">jQuery</a> &#8211; it&#8217;s a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development.</p>
<p>Indeed, we can do a many things with jQuery and it realy simplify the coding, but what if we have to build a product list with complicated HMTL, complex logic and real time manipulation ?</p>
<p>As i mentioned before, ASP.NET and UpdatePanels are just to heavy and JavaScript is to long.</p>
<p>So, i did some research and find a couple of JavaScript Template Engines.<br />
The first one i bumped in was <a href="http://plugins.jquery.com/project/jsrepeater" target="_blank">jsRepeater</a>. At first it seemed like a great solution but after a few tests i found all kinds of bugs related to the syntax conflicts with HTML and JavaScript.</p>
<p>After a few days of googling, tests and googling again i found the one and only &#8211;  <a title="jTemplates" href="http://jtemplates.tpython.com/" target="_blank">jTemplates</a>.<br />
jTemplates is a template engine for JavaScript, wich is wraped in a jQuery Plugin.<br />
The syntax is very simple and  intuitive. It&#8217;s support parameters, includes, if/else, loops, JavaScript functions and many other nice and usable  features.</p>
<p>Let&#8217;s say we want to list all our products. What we have to do is to write the template (HTML), pass the data and we have a product list.</p>
<p>
<div><span style="color: #0000ff;">{#foreach $T.Product as P}</span></div>
<div style="padding-left: 30px;"><span style="color: #0000ff;">&lt;</span><span style="color: #0000ff;">div</span> <span style="color: #008000;">style</span>=&#8221;float:left;width:150px;height:150px&#8221;<span style="color: #0000ff;">&gt;</span></div>
<div style="padding-left: 60px;"><span style="color: #0000ff;">&lt;</span><span style="color: #0000ff;">div</span><span style="color: #0000ff;">&gt;</span><strong>{$T.P.Title}</strong><span style="color: #0000ff;">&lt;/div&gt;</span></div>
<div style="padding-left: 60px;"><span style="color: #0000ff;">&lt;</span><span style="color: #0000ff;">img</span> <span style="color: #008000;">src</span>=&#8221;<strong>{$T.P.Url}</strong>&#8221; <span style="color: #008000;">alt</span>=&#8221;<strong>{$T.P.Title}</strong>&#8221; style=&#8221;width:10px;height:10px&#8221; <span style="color: #0000ff;">/&gt;</span></div>
<div style="padding-left: 60px;"><span style="color: #0000ff;">&lt;hr /&gt;</span></div>
<div style="padding-left: 60px;"><span style="color: #0000ff;">&lt;</span><span style="color: #0000ff;">div</span><span style="color: #0000ff;">&gt;</span>Price : <strong>{$T.P.Price}$</strong><span style="color: #0000ff;">&lt;/div&gt;</span></div>
<div style="padding-left: 30px;"><span style="color: #0000ff;">&lt;/</span><span style="color: #0000ff;">div</span><span style="color: #0000ff;">&gt;</span></div>
<div><span style="color: #0000ff;">{#/for}</span></div>
</p>
<p>Look how easy this is. You just write HTML and werever you need to insert some data you put {$.T.P.ColumnName}.</p>
<p>So, how we use it ?<br />
Just add some textarea to your page, give it some id, set it&#8217;s display style to none and write your template inside.</p>
<pre class="html" name="code">
&lt;textarea cols="0" rows ="0" style="display:none;" id="ProductListTemplate"&gt;&lt;!--
{#foreach $T.Product as P}
	&lt;div style=”float:left;width:150px;height:150px”&gt;
		&lt;div>{$T.P.Title}&lt;/div&gt;
		&lt;img src=”{$T.P.Url}” alt=”{$T.P.Title}” style=”width:10px;height:10px” /&gt;
		&lt;hr /&gt;
		&lt;div>Price : {$T.P.Price}$&lt;/div&gt;
	&lt;/div&gt;
{#/for}
--&gt;&lt;/textarea&gt;
</pre>
<p>Add some empty container that will hold the result.</p>
<pre class="html" name="code">
&lt;div id="ProductListContainer"&gt;&lt;/div&gt;
</pre>
<p>Execute setTemplateElement and execute processTemplate while passing the data into it as a parameter</p>
<pre class="javascript" name="code">
$("#ProductListContainer").setTemplateElement("ProductListTemplate");
$("#ProductListContainer").processTemplate(data);
</pre>
<p>Easy, isn&#8217;t it ?<br />
I must say that the above example is a simple one, but I&#8217;ve been using jTemplates to create complicated lists, grids, trees, popups and even an image editing web application. Use it, I&#8217;m sure you will love it.</p>
<div style="margin-top:-15px;margin-bottom:15px;"><script type="text/javascript">
var dzone_url = 'http://kossovsky.net/index.php/2009/10/jtemplates-jquery-template-engine/';
var dzone_style = '1';
</script><br />
<script language="javascript" src="http://widgets.dzone.com/links/widgets/zoneit.js"></script>
</div>
<br /><div><img src="http://kossovsky.net/wp-content/plugins/gd-star-rating/gfx.php?value=4.9" /></div><div>Rating: 4.9/<strong>5</strong> (10 votes cast)</div><br /><a target="_blank" href="http://www.gdstarrating.com/"><img src="http://kossovsky.net/wp-content/plugins/gd-star-rating/gfx/powered.png" border="0" width="80" height="15" /></a><br />
<p class="FacebookLikeButton"><fb:like href="http%3A%2F%2Fkossovsky.net%2Findex.php%2F2009%2F10%2Fjtemplates-jquery-template-engine%2F" layout="standard" show_faces="false" width="450" action="like" colorscheme="light"></fb:like></p>


<p>Related posts:<ol><li><a href='http://kossovsky.net/index.php/2009/07/ie-memory-leak-jquery-garbage-collector/' rel='bookmark' title='Permanent Link: IE Memory Leak &#8211; jQuery Fix'>IE Memory Leak &#8211; jQuery Fix</a></li>
<li><a href='http://kossovsky.net/index.php/2009/07/script-as-blocking-element-and-dynamic-script-loading-using-document-write/' rel='bookmark' title='Permanent Link: Script as blocking element and dynamic script loading using document.write'>Script as blocking element and dynamic script loading using document.write</a></li>
<li><a href='http://kossovsky.net/index.php/2009/07/function-context-and-apply-function/' rel='bookmark' title='Permanent Link: Javascript function context, &#8220;apply&#8221; method and lost &#8220;this&#8221; object'>Javascript function context, &#8220;apply&#8221; method and lost &#8220;this&#8221; object</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://kossovsky.net/index.php/2009/10/jtemplates-jquery-template-engine/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Javascript function context, &#8220;apply&#8221; method and lost &#8220;this&#8221; object</title>
		<link>http://kossovsky.net/index.php/2009/07/function-context-and-apply-function/</link>
		<comments>http://kossovsky.net/index.php/2009/07/function-context-and-apply-function/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 21:18:20 +0000</pubDate>
		<dc:creator>Maxim</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Callback]]></category>
		<category><![CDATA[fellow programmer]]></category>
		<category><![CDATA[javascript object]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[lame question]]></category>
		<category><![CDATA[request data]]></category>
		<category><![CDATA[script type]]></category>
		<category><![CDATA[server data]]></category>
		<category><![CDATA[solution number]]></category>
		<category><![CDATA[testthis]]></category>
		<category><![CDATA[text javascript]]></category>
		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://kossovsky.net/?p=519</guid>
		<description><![CDATA[How many times you had problem or were asked about what happened to this object in your function? Or why this is not an object you expect it to be? Probably these times you have to remind yourself or your fellow programmer about function context. First of all I have to ask you all a [...]<br /><div><img src="http://kossovsky.net/wp-content/plugins/gd-star-rating/gfx.php?value=4.9" /></div><div>Rating: 4.9/<strong>5</strong> (8 votes cast)</div><br /><a target="_blank" href="http://www.gdstarrating.com/"><img src="http://kossovsky.net/wp-content/plugins/gd-star-rating/gfx/powered.png" border="0" width="80" height="15" /></a><br />


Related posts:<ol><li><a href='http://kossovsky.net/index.php/2009/07/javascript-pseudo-protocol-is-evil/' rel='bookmark' title='Permanent Link: Javascript pseudo protocol (is EVIL)'>Javascript pseudo protocol (is EVIL)</a></li>
<li><a href='http://kossovsky.net/index.php/2009/07/javascript-boolean-interpretation/' rel='bookmark' title='Permanent Link: Javascript boolean interpretation'>Javascript boolean interpretation</a></li>
<li><a href='http://kossovsky.net/index.php/2009/07/script-as-blocking-element-and-dynamic-script-loading-using-document-write/' rel='bookmark' title='Permanent Link: Script as blocking element and dynamic script loading using document.write'>Script as blocking element and dynamic script loading using document.write</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>How many times you had problem or were asked about what happened to <strong><em>this</em></strong> object in your function? Or why <strong><em>this</em></strong> is not an object you expect it to be? Probably these times you have to remind yourself or your fellow programmer about function context.<br />
First of all I have to ask you all a pretty lame question. If you write function in JS block right inside your HTML, what <strong><em>this</em></strong> keyword will refer to?</p>
<pre class="javascript" name="code">&lt;script type="text/javascript"&gt;
		function testThis(){
		  //who is "this"
		}
&lt;/script&gt;</pre>
<p>And now to the real example.<br />
<span id="more-519"></span><br />
Let’s say you build a simple Javascript object:</p>
<pre class="javascript" name="code">&lt;script type="text/javascript"&gt;
		var mathObj = {
			pi: 3.14,
			getCircumference : function(data) {
				alert(this.pi * 2 * data.radius);
			}
		}

		mathObj.getCircumference(10);
&lt;/script&gt;</pre>
<p>You have properties, you have functions, you can use <strong><em>this</em></strong> keyword to access properties of the object from its functions. Everyone is happy.<br />
Now we want to add function that will get some server data using AJAX and run one of the functions our object has.<br />
(To all who wondered what is $ stands for &#8211; I use JQuery framework in all my JS samples)</p>
<pre class="javascript" name="code">&lt;script type="text/javascript"&gt;
		var mathObj = {
			pi: 3.14,
			getCircumference : function(data) {
				alert(this.pi * 2 * data.radius);
			},
			getRemoteCircumference: function(url) {
				$.getJSON(url, this.getCircumference);
			}
		}

		mathObj.getRemoteCircumference("RadiusData.js");
&lt;/script&gt;</pre>
<p>If we have {&#8220;radius&#8221;:5} in RadiusData.js file you would expect the result of getCircumference would be 31.4 but you will get NaN. Why is that? Because <strong><em>this</em></strong> keyword in this case will refer to some kind of object with request data returned by JQuery. What can you do?<br />
Solution number one is to use your object name:</p>
<pre class="javascript" name="code">...
	getCircumference : function(data) {
		alert(mathObj.pi * 2 * data.radius);
	}
...</pre>
<p>Ugly. You don&#8217;t have to return on object name in every function.<br />
Solution number two is to use anonymous function and explicitly call your function:</p>
<pre class="javascript" name="code">
....
	getRemoteCircumference: function(url) {
		$.getJSON(url, function(data){
			mathObj.getCircumference(data);
		});
	}
...
</pre>
<p>Good enough solution, but again I don&#8217;t like reusing object name&#8230;<br />
And now to my favorite solution.</p>
<pre class="javascript" name="code">&lt;script type="text/javascript"&gt;
   function getContextFunc(context, func) {
       return function() {
           func.apply(context, arguments);
       };
   }

   var mathObj = {
       pi: 3.14,
       getCircumference: function(data) {
           alert(this.pi * 2 * data.radius);
       },
       getRemoteCircumference: function(url) {
          $.getJSON(url, getContextFunc(this, this.getCircumference));
       }
   }

   mathObj.getRemoteCircumference("RadiusData.js");
&lt;/script&gt;</pre>
<p>Here apply function will come in handy. <strong><em>getContextFunc</em></strong> returns anonymous function that will run our original method in given context.<br />
<a target="_blank" href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Function/apply">See some documentation</a></p>
<br /><div><img src="http://kossovsky.net/wp-content/plugins/gd-star-rating/gfx.php?value=4.9" /></div><div>Rating: 4.9/<strong>5</strong> (8 votes cast)</div><br /><a target="_blank" href="http://www.gdstarrating.com/"><img src="http://kossovsky.net/wp-content/plugins/gd-star-rating/gfx/powered.png" border="0" width="80" height="15" /></a><br />
<p class="FacebookLikeButton"><fb:like href="http%3A%2F%2Fkossovsky.net%2Findex.php%2F2009%2F07%2Ffunction-context-and-apply-function%2F" layout="standard" show_faces="false" width="450" action="like" colorscheme="light"></fb:like></p>


<p>Related posts:<ol><li><a href='http://kossovsky.net/index.php/2009/07/javascript-pseudo-protocol-is-evil/' rel='bookmark' title='Permanent Link: Javascript pseudo protocol (is EVIL)'>Javascript pseudo protocol (is EVIL)</a></li>
<li><a href='http://kossovsky.net/index.php/2009/07/javascript-boolean-interpretation/' rel='bookmark' title='Permanent Link: Javascript boolean interpretation'>Javascript boolean interpretation</a></li>
<li><a href='http://kossovsky.net/index.php/2009/07/script-as-blocking-element-and-dynamic-script-loading-using-document-write/' rel='bookmark' title='Permanent Link: Script as blocking element and dynamic script loading using document.write'>Script as blocking element and dynamic script loading using document.write</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://kossovsky.net/index.php/2009/07/function-context-and-apply-function/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>IE Memory Leak &#8211; jQuery Fix</title>
		<link>http://kossovsky.net/index.php/2009/07/ie-memory-leak-jquery-garbage-collector/</link>
		<comments>http://kossovsky.net/index.php/2009/07/ie-memory-leak-jquery-garbage-collector/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 08:37:12 +0000</pubDate>
		<dc:creator>Xander</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[filter selector]]></category>
		<category><![CDATA[garbage collector]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[html contents]]></category>
		<category><![CDATA[html elements]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[IE7]]></category>
		<category><![CDATA[IE8]]></category>
		<category><![CDATA[javascript functions]]></category>
		<category><![CDATA[jQuery Plugin]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[memory leak]]></category>
		<category><![CDATA[memory leaks]]></category>
		<category><![CDATA[nyromodal]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[virtual memory]]></category>

		<guid isPermaLink="false">http://kossovsky.net/?p=489</guid>
		<description><![CDATA[I suppose all of you have suffered all those terrible memory leaks in Internet Explorer. Sometimes it&#8217;s bearable, but most of the time it&#8217;s not. I say enough is enough ! A couple of days ago, I had to create some web application with a very rich client side UI. It worked like a charm [...]<br /><div><img src="http://kossovsky.net/wp-content/plugins/gd-star-rating/gfx.php?value=4.3" /></div><div>Rating: 4.3/<strong>5</strong> (13 votes cast)</div><br /><a target="_blank" href="http://www.gdstarrating.com/"><img src="http://kossovsky.net/wp-content/plugins/gd-star-rating/gfx/powered.png" border="0" width="80" height="15" /></a><br />


Related posts:<ol><li><a href='http://kossovsky.net/index.php/2009/10/jtemplates-jquery-template-engine/' rel='bookmark' title='Permanent Link: jTemplates &#8211; jQuery Template Engine'>jTemplates &#8211; jQuery Template Engine</a></li>
<li><a href='http://kossovsky.net/index.php/2009/07/function-context-and-apply-function/' rel='bookmark' title='Permanent Link: Javascript function context, &#8220;apply&#8221; method and lost &#8220;this&#8221; object'>Javascript function context, &#8220;apply&#8221; method and lost &#8220;this&#8221; object</a></li>
<li><a href='http://kossovsky.net/index.php/2009/07/javascript-pseudo-protocol-is-evil/' rel='bookmark' title='Permanent Link: Javascript pseudo protocol (is EVIL)'>Javascript pseudo protocol (is EVIL)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I suppose all of you have suffered all those terrible memory leaks in Internet Explorer.<br />
Sometimes it&#8217;s bearable, but most of the time it&#8217;s not. I say enough is enough !</p>
<p><span id="more-489"></span></p>
<p>A couple of days ago, I had to create some web application with a very rich client side UI.<br />
It worked like a charm in Google Chrome, Firefox&#8230; but IE7, after few dozens of nyroModal popups it just went dead. </p>
<p>Most of the styles are gone, JavaScript functions began to throw exceptions till it just stoped working, decided it can&#8217;t tolerate this kind of abuse any more and closed it self without any warning.</p>
<p>The first thing i did is to open Performance Monitor and what I see&#8230; every nyroModal popup i open cost me about 5Mb, so after a few clicks my IE7 virtual memory was about 789Mb. Terrifying, isn&#8217;t it ?</p>
<p><img src="http://kossovsky.net/wp-content/uploads/2009/07/IE7MemoryLeak.gif" alt="IE7 Memory Leak" title="IE7 Memory Leak" width="426" height="130" class="size-full wp-image-490" /></p>
<p>I&#8217;ve searched a bit and found the source of this problem was in one (of many) memory leaks IE7 proudly has &#8211; cleaning memory for removed HTML elements.</p>
<p>And now the fix.</p>
<p>1). Open your jQuery.js and find the next lines of code</p>
<pre class="javascript" name="code">
    jQuery.extend({
        cache: {},
</pre>
<p>and add new function &#8220;discardElement&#8221;</p>
<pre class="javascript" name="code">
    jQuery.extend({
        cache: {},

        discardElement: function(element) {
            var jqGCID = 'jqGarbageCollector';
            var jqGC = document.getElementById(jqGCID);
            if (!jqGC) {
                jqGC = document.createElement('div');
                jqGC.id = jqGCID;
                jqGC.style.display = 'none';
                document.body.appendChild(jqGC);
            }

            // place the element to the Garbage Collector
            // and clear it's HTML contents
            jqGC.appendChild(element);
            jqGC.innerHTML = '';
        },
</pre>
<p>2). Find the next lines of code in the opened jquery.js </p>
<pre class="javascript" name="code">
	remove: function( selector ) {
		if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
			// Prevent memory leaks
			jQuery( "*", this ).add([this]).each(function(){
				jQuery.event.remove(this);
				jQuery.removeData(this);
			});
			if (this.parentNode)
				this.parentNode.removeChild( this );
		}
	},
</pre>
<p>and replace &#8220;this.parentNode.removeChild( this );&#8221;<br />
with &#8220;jQuery.discardElement(this);&#8221;</p>
<pre class="javascript" name="code">
	remove: function( selector ) {
		if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
			// Prevent memory leaks
			jQuery( "*", this ).add([this]).each(function(){
				jQuery.event.remove(this);
				jQuery.removeData(this);
			});
			if (this.parentNode)
				// this.parentNode.removeChild( this );
				jQuery.discardElement(this);
		}
	},
</pre>
<p>That&#8217;s it, now you (and every plugin) can do $(&#8216;element&#8217;).remove() without being worry IE will eat all of your memory.</p>
<br /><div><img src="http://kossovsky.net/wp-content/plugins/gd-star-rating/gfx.php?value=4.3" /></div><div>Rating: 4.3/<strong>5</strong> (13 votes cast)</div><br /><a target="_blank" href="http://www.gdstarrating.com/"><img src="http://kossovsky.net/wp-content/plugins/gd-star-rating/gfx/powered.png" border="0" width="80" height="15" /></a><br />
<p class="FacebookLikeButton"><fb:like href="http%3A%2F%2Fkossovsky.net%2Findex.php%2F2009%2F07%2Fie-memory-leak-jquery-garbage-collector%2F" layout="standard" show_faces="false" width="450" action="like" colorscheme="light"></fb:like></p>


<p>Related posts:<ol><li><a href='http://kossovsky.net/index.php/2009/10/jtemplates-jquery-template-engine/' rel='bookmark' title='Permanent Link: jTemplates &#8211; jQuery Template Engine'>jTemplates &#8211; jQuery Template Engine</a></li>
<li><a href='http://kossovsky.net/index.php/2009/07/function-context-and-apply-function/' rel='bookmark' title='Permanent Link: Javascript function context, &#8220;apply&#8221; method and lost &#8220;this&#8221; object'>Javascript function context, &#8220;apply&#8221; method and lost &#8220;this&#8221; object</a></li>
<li><a href='http://kossovsky.net/index.php/2009/07/javascript-pseudo-protocol-is-evil/' rel='bookmark' title='Permanent Link: Javascript pseudo protocol (is EVIL)'>Javascript pseudo protocol (is EVIL)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://kossovsky.net/index.php/2009/07/ie-memory-leak-jquery-garbage-collector/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
	</channel>
</rss>
