TreeviewCopyright © aleen42 all right reserved, powered by aleen42
jQuery Back
1. Prefix $
- Prefix jQuery objects variables with
$
/**
* bad
*/
const sidebar = $('.sidebar');
/**
* good
*/
const $sidebar = $('.sidebar');
2. Cache jQuery object
/**
* bad
*/
function setSidebar() {
$('.sidebar').hide();
/**
* ...
*/
$('.sidebar').css({
'background-color': 'blue'
});
}
/**
* good
*/
function setSidebar() {
const $sidebar = $('.sidebar');
$sidebar.hide();
/**
* ...
*/
$sidebar.css({
'background-color': 'blue'
});
}
3. Use Cascading or parent > child
- To use Cascading
$('.sidebar ul')
or parent > child$('.sidebar > ul')
, which named context selector
$('.sidebar ul').hide();
$('.sidebar > ul').hide();
$sidebar = $('.sidebar');
$sidebar.find('ul').hide();
4. Performance of different selectors
The performance testing jsPerf between
.find()
,context selector
andnon-context selector
.Testing in Chrome 47.0.2526.106 32-bit on Windows NT 10.0 64-bit
Type | Statements | Results(Opts/sec |
---|---|---|
find method (node context) |
const has = $(artical).find('ins').length > 0 ? true : false |
203,913 ± 1.12% (fastest) |
context node | const has = $('ins', article).length > 0 ? true : false; |
169,866 ± 10.33% (17% slower) |
context jQuery[0] | const has = $('ins', $article[0]).length > 0 ? true : false; |
154,641 ± 6.12% (24% slower) |
cascade | const has = $('article ins').length > 0 ? true : false; |
18,615 ± 1.80% (91% slower) |
'parent > child' selector | const has = $('article > ins').length > 0 ? true : false; |
15,888 ± 5.97% (92% slower) |
context jQuery | const has = $('ins', $article).length > 0 ? true : false; |
10,120 ± 4.92% (95% slower) |
find method (jQuery context) |
const has = $($article).find('ins').length > 0 ? true : false; |
9,599 ± 1.84% (95% slower) |
context (no cache) | const has = $('ins', 'article').length > 0 ? true : false; |
9,156 ± 4.45% (96% slower) |
select and find | const has = $('article').find('ins').length > 0 ? true : false; |
7,046 ± 8.12% (97% slowest) |
- Testing in Firefox 42.0 32-bit on Windows NT 10.0 64-bit
Type | Statements | Results(Opts/sec |
---|---|---|
find method (node context) |
const has = $(artical).find('ins').length > 0 ? true : false |
132,743 ± 8.18% (fastest) |
context jQuery[0] | const has = $('ins', $article[0]).length > 0 ? true : false; |
123,678 ± 2.04% (fastest) |
context node | const has = $('ins', article).length > 0 ? true : false; |
108,953 ± 5.23% (18% slower) |
cascade | const has = $('article ins').length > 0 ? true : false; |
17,027 ± 3.86% (87% slower) |
'parent > child' selector | const has = $('article > ins').length > 0 ? true : false; |
15,982 ± 7.53% (88% slower) |
context jQuery | const has = $('ins', $article).length > 0 ? true : false; |
6,307 ± 2.37% (95% slower) |
find method (jQuery context) |
const has = $($article).find('ins').length > 0 ? true : false; |
5,433 ± 5.18% (96% slower) |
select and find | const has = $('article').find('ins').length > 0 ? true : false; |
5,268 ± 5.23% (96% slower) |
context (no cache) | const has = $('ins', 'article').length > 0 ? true : false; |
4,727 ± 7.55% (96% slowest) |