2013-11-21 3 views
0

У меня очень большая одна страница html. Я выполняю манипуляции данными на этой странице. Мне интересно, есть ли лучший способ для JQuery-селектора. какJQuery Selector Performance Advice?

$("#id").text("ABC"); 

Выше поиска заявление для тегов в моей HTML страницы, так как мой HTML очень большой. есть ли какие-либо рекомендации по производительности для этого?

для:

Какой из них быстрее?

$(document).on("click", "#contactsTab", callback); 

или

$("#contactsTab").on("click", callback); 
+1

Поиск по значению «id», как это происходит очень быстро. – Pointy

+3

http://learn.jquery.com/performance/optimize-selectors/ – Nate

+0

У вас есть конкретный сценарий, когда вышеперечисленные проблемы вызывают проблемы? –

ответ

0

Если вы собираетесь повторно использовать $("#id"), я бы хранить его в переменной, а затем использовать это. В противном случае вы каждый раз просматриваете DOM для этого элемента.

var $element = $("#id"); 
$element.text("ABC"); 
+0

Браузер делает это, фактически. Я не говорю, что я тоже этого не сделаю, если элемент стабилен, просто говоря, он, вероятно, не имеет особого значения. –

+0

О, правда? Я этого не знал. Я смотрел видео на Pluralsight, и автор предложил это сделать, особенно в циклах, поэтому я всегда стараюсь хранить их в переменных, если я использую селектор более одного раза. Полезно знать, хотя! – lhan

+0

В частности, в цикле вы сохраняете как минимум: 1. jQuery разбор строки (хотя это не удивительно, что она оптимизирована для этого) и 2. Вызов в слой DOM. Это совсем не бесполезно, и я делаю это по умолчанию и рекомендую его. И в искусственных, повторных тестах это резко отличается. Но в реальных условиях это не такая уж большая вещь, как вы думаете. –

0

Поиск по id - это самый быстрый поиск в доме. Это может быть номинально быстрее:

document.getElementById("id").innerHTML = "ABC"; 
0

Селектор ID должен иметь самые оптимальные из всех функций селектора jQuery. В идеале вы не должны иметь более одного элемента на странице, имеющей этот идентификатор.