Элементы jQuery / javascript для повышения эффективности? - PullRequest
6 голосов
/ 16 февраля 2011

Правильно, поэтому я предполагаю, что здравый смысл заключается в том, что для элементов, к которым у вас будет много доступа, лучший способ - это кэшировать их так:

var myEl = $('.myclass');

И тогда вы можете просто получить доступ(myEl) в будущем, и вам не нужно снова искать DOM, правильно?Хорошо, допустим, у меня довольно сложная HTML-структура, в которой мне нужно получить доступ к нескольким различным элементам, например, 20-30.Это очень уродливо делать подобные вещи 30 раз!

var elA = $('.myela'),
    elB = $('.myelb');

и т. Д., Вы понимаете ... так что есть что-то "плохое" в этом, сохраняйте один и тот же класс на всех этих элементах, но дайте им уникальный идентификатор, затем сделайте следующее:

var myElementObject={};
$('.myelems').each(function(){
     myElementObject[$(this).attr('id')] = $(this);
});

Таким образом, я получаю объект object.wheverId, который является кэшированным элементом, и теперь я могу использовать их по своему усмотрению, не запрашиваяDOM все время, верно ли это предположение, это плохая практика?Как вы, ребята, делаете это?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 16 февраля 2011

Если вы собираетесь назначать идентификаторы, просто используйте $('#id'), поскольку он использует getElementById, что очень быстро и, вероятно, не намного медленнее, чем помещать их в некоторый объектный хеш.

Также рассмотрите возможность применения общего класса к этим элементам или группировки их другим способом, чтобы вы могли кэшировать $('.mycommonclass')

0 голосов
/ 16 февраля 2011

Это хороший способ сделать это, если вы уверены, что собираетесь получить доступ к этим элементам (иначе это будут потраченные впустую ресурсы).Еще одна маленькая вещь: было бы лучше, если бы вы получили доступ к элементу в первом примере, используя myEl, а не $(myEl), так как $(myEl) должен выполнять функцию (jQuery).

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