Selettori, contesto e performance in jQuery

Selettori, contesto e performance in jQuery

I selettori di jQuery devono gran parte della loro efficacia al fatto di operare in un contesto preciso dell'albero DOM del documento. Per impostazione predefinita, i selettori operano avendo come riferimento l'oggetto document, ma questa impostazione può essere modificata usando la sintassi estesa del wrapper jQuery $().

Consideriamo questa struttura HTML:


<ul id="test">
  <li>...</li>
  <li>...</li>
  <li>...</li>
</ul>

Tradizionalmente siamo abituati ad operare sulle voci di lista in questo modo:


$('#test li').each(function() {
  //...
});

A livello di performance, questo comporta un notevole dispendio di risorse, specie quando gli elementi sono molto numerosi. La sintassi di jQuery è del tutto simile a quella dei CSS: selettori con maggiore specificità sono più performanti di selettori con minore specificità.

Possiamo usare il contesto dei selettori in questo modo:


$('li', '#test').each(function() {
  //...
});

In questo modo il contesto non è più document ma #test, e quindi l'engine di jQuery userà tale contesto per selezionare gli elementi voluti. Questo comporta un significativo aumento della performance, e si rivela decisivo soprattutto nelle situazioni di più elevato carico da parte del browser.

Torna su