jQuery - можно ли использовать $ ('# ElementId') каждый раз? - PullRequest
3 голосов
/ 01 июля 2011

Я только что узнал, как сделать аналог document.getElementById в jQuery (и он более мощный). У меня вопрос, можно ли использовать его каждый раз или каждую строку кода? Вот как я использую это сейчас:

$('#MyParentElement').html('<tr id="' + $('#MyElement').val() + '"><td>' + $('#MyElement').val() + '</td></tr>';

Не лучше ли, если я сделаю что-то вроде использования переменной для ссылки на объект?

var x = $('#MyElement');
$('#MyParentElement').html('<tr id="' + x.text() + '"><td>' + x.text() + '</td></tr>';

Обратите внимание, что меня больше беспокоит производительность, а не чистота кодов.

Ответы [ 7 ]

7 голосов
/ 01 июля 2011

DOM выбор дорогой. Кэшируйте это.

var x = $('#MyElement');

Вот тест jsPerf . В Chrome 13 в Mac OS X ссылка на переменную работает в 1000 раз быстрее.

Это связано не только с выбором DOM, но и с созданием объекта jQuery.

2 голосов
/ 01 июля 2011
1 голос
/ 01 июля 2011

Кто-то исправит меня, если я ошибаюсь, но я понимаю, что если вы используете второй вариант (то есть var x = $ ('# myElement')), он не будет обновляться динамически. Если #myElement изменился, как это иногда делают элементы, вы бы все равно ссылались на то, что было, когда вы присваивали его значение X.

Если вы не чувствуете, что #myElement изменится, тогда используйте вариант var x. Как уже говорили другие, это немного быстрее.

1 голос
/ 01 июля 2011

почему бы и нет?

var x = $('#MyElement').text();
$('#MyParentElement').html('<tr id="' + x + '"><td>' + x + '</td></tr>';
1 голос
/ 01 июля 2011

Учитывая, что второй код запрашивает DOM только один раз для x, да, гораздо лучше хранить объект jQuery.

0 голосов
/ 01 июля 2011

Это так же хорошо, как звонить document.getElementById каждый раз.

Технически лучше использовать второй вариант и сохранить результат в переменной, если вы будете обращаться к нему повторно.Но с практической точки зрения, если у вас нет сотен ссылок на один и тот же элемент, тогда разница не будет заметна для пользователя.

0 голосов
/ 01 июля 2011

Хранение $ ('# MyParentElement') в переменной будет быстрее, однако с небольшим запасом, поскольку выбор по ID элемента происходит быстро.Хотя при создании большого JS-приложения оно может сложиться.

...