I’m playing around with jsperf, querySelectorAll and data-xyz attributes.
Here is my current jsperf: jqmData vs. attribute selector
The critial piece is in the js test:
document.body.querySelectorAll('data-role')
Note I’m not using any square brackets [] and it still runs fine and beats all other selectors flat. I upped it to 200+ data-role elements on a page, and it still worked faster.
Then I tried on my own test page here (see Firebug) and alas… the nodeList is empty when I omit without square brackets.
Question:
What magic is jsperf using, so that the selector works there and not on my dummy website.
Your tests don’t check that the selector actually matched anything. No great surprise that
querySelectorAllwon when it knew there weren’t anydata-roletags and so could immediately return an emptyNodeList. 🙂And indeed, if you add checks to each test to make sure it really got the right number of elements, the
querySelectorAllone fails: http://jsperf.com/jqmdata-vs-attribute-selecotr/5