Селекторы jQuery: что быстрее для захвата подмножества детей? - PullRequest
4 голосов
/ 11 октября 2010

В ответ на этот вопрос у меня есть 2 варианта:

$("tr td").slice(3, 6);

И, возможно, что-то вроде этого (я имею в виду, говоря алгоритмически; я знаю, что делать новые строки запросов для каждого элемента довольно глупо):

var subset = $( "tr td:nth-child(4)" );
for(var i=4; i<7; i++) subset.add( "tr td:nth-child("+i+")" );

Что будет работать эффективнее? Будет ли другое более эффективное решение?

Ответы [ 2 ]

3 голосов
/ 11 октября 2010

Первый ($("tr td").slice(3, 6)) будет работать намного быстрее, так как это вызов с одним селекторным механизмом, но, как всегда, протестируйте его!

Я настроил тест производительности, чтобы вы могли проверить и то, и другоеответы) сами здесь: http://jsperf.com/slice-performance-test

0 голосов
/ 11 октября 2010

В первом коде вы вычисляете $('tr td') один раз и получаете фрагмент.

Во втором коде вы вычисляете $('tr td') 4 раза, а затем извлекаете 4-7-го ребенка каждый раз.

Следовательно, 1-й код быстрее. На самом деле его легче читать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...