Question

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.

Was it helpful?

Solution

Your tests don't check that the selector actually matched anything. No great surprise that querySelectorAll won when it knew there weren't any data-role tags and so could immediately return an empty NodeList. :-)

And indeed, if you add checks to each test to make sure it really got the right number of elements, the querySelectorAll one fails: http://jsperf.com/jqmdata-vs-attribute-selecotr/5

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top