Если вы создаете плагин, вы должны использовать $.data
. Если вам нужно хранить атрибут часто и редко нужно запрашивать его у DOM, используйте $.data
.
Сказав это, для всех моих клиентских приложений я склонен хранить собственные атрибуты DOM на самом элементе DOM, чтобы я мог запросить их позже, используя атрибут []
selector:
var domElement = $('.interesting-line[lineNumber=' + lineNumber + ']').get(0);
Это намного удобнее для чтения, чем повторение упакованного набора, вызывающего .data()
для каждого элемента. Часто я взаимодействую с другой сторонней библиотекой, которая работает с элементом DOM, поэтому быстрый и легкий доступ к элементу DOM через этот механизм делает код читабельным.
Это так же просто, как сохранить сопоставление таблицы поиска lineNumbers
для элементов, однако метод атрибута expando по сравнению с ним менее подвержен риску утечки памяти, поскольку вы не сохраняете ссылки на элементы DOM, которые необходимо очистить позже.
Обновление через 5 лет
Просто прочитайте это после того, как оно получило [вполне заслуженное] отрицательное голосование: пожалуйста, игнорируйте выделенный текст выше. jQuery не запрашивает DOM, основываясь на наборе свойств расширения, и некоторое время не делал этого. Так что используйте $.data
. Нет причин загрязнять DOM, если для этого нет практического применения.