 <p>Two issues I can see here:</p> <ol> <li><p>The empty() and remove() methods of jQuery actually do quite a bit of work. See John Resig's <a href="http://ejohn.org/blog/function-call-profiling/" rel="nofollow noreferrer">JavaScript Function Call Profiling</a> for why.</p></li> <li><p>The other thing is that for large amounts of tabular data you might consider a datagrid library such as the excellent <a href="http://www.datatables.net/" rel="nofollow noreferrer">DataTables</a> to load your data on the fly from the server, increasing the number of network calls, but decreasing the size of those calls. I had a very complicated table with 1500 rows that got quite slow, changing to the new AJAX based table made this same data seem rather fast.</p></li> </ol>