JQuery Performance Tips Cheat Sheet
dumitruglavan.com
dumitruglavan.com
For better performance you can use direct functions like $.ajax() than $.get(), $.getJSON(), $.post() because the last ones are shortcuts that call the $.ajax() function.
I've never written an app where the overhead of $.getJSON has been any kind of bottleneck.
Don’t forget about using .data() function to store stuff for your elements
How is this a performance tip?
Sometimes it’s faster to use $(window).load() than $(document).ready() because the last one occurs before all the DOM elements are downloaded
Say what?
If you want to save some bits on compressing your js plugin – replace the $(document).onready() event
Saving bits! The favorite optimization bikeshed of the JavaScript glitterati.
The best way to test a Javascript code is the human way :D But, you still can use some automated tools like Selenium, Funcunit, QUnit and QMock to test your code
I hope this is a joke.
The new HTML 5 standard comes with a lighter DOM structure in mind
What?
When styling a few elements it is best to simply use jQuery’s css() method, however when styling 15 or more elements it is more efficient to append a style tag to the DOM.
Or, if you're worried about performance and reusability, you could use classes and use addClass and removeClass.
"Lazy load content for speed and SEO benefits"
This guy either works at Google or doesn't have a clue of what he's saying. SEO is already black magic. That kind of claim requires heavy evidence which are simply not there.
As with most development, use good practices. But then at the end of the day, profile your application to find the actual bottlenecks.
15. Add a JS class to your HTML attribute Firstly, as soon as jQuery has loaded you use it to add a “JS” class to your HTML tag.
1 $('HTML').addClass('JS'); Because that only happens when javascript is enabled, you can use it to add CSS styles which only work if the user has JavaScript switched on, like this…
1 /* In your css */ 2 .JS #myDiv{display:none;} So, what this means is that we can hide content when JavaScript is switched on and then use jQuery to show it when necessary (e.g. by collapsing some panels and expanding them when the user clicks on them), while those with JavaScript off (and search engine spiders) see all of the content, as it’s not hidden. I’ll be using this one a lot in the future.
http://www.learningjquery.com/2008/10/1-way-to-avoid-the-fla...
The solution is to just not use jQuery for that. It's such a simple operation anyway. I do something like:
<body>
<script type="text/javascript">
document.body.setAttribute("class","hasJs");
</script>
No flicker or jQuery load delay. <script>document.getElementsByTagName('html')[0].className += ' js'</script>
here, in <head>. Can co-exist with conditional IE classes a là HTML5 Boilerplate. 5. Use find() rather than context
This is not really true. The "context" argument uses find under the covers anyway; the performance benefit is literally the overhead of a function calling another function (which is, compared to DOM operations, miniscule).The jQuery source code comments say as much:
// HANDLE: $(expr, context)
// (which is just equivalent to: $(context).find(expr)I've never seen any real stats.
Seems like people are testing the sort of things measured in this article at the moment too eg.: