Да. Вы можете иногда найти это описанным как дурной тон. Очевидным недостатком является то, что в более поздних версиях веб-стандартов к элементу DOM могут быть добавлены новые свойства, которые будут конфликтовать с вашим пользовательским свойством, поэтому, если вы используете эту технику, выберите имя, которое вряд ли будет конфликтовать, например включите в нее название вашей компании.
Другая потенциальная проблема заключается в том, что объекты DOM в некоторых браузерах не собираются должным образом. Вместо этого они считаются ссылками. Это означает, что если вы создаете систему циклических ссылок с помощью пользовательских свойств, вы можете вызвать утечку памяти.
Например, это может привести к утечке памяти, поскольку между объектами DOM и javascript существует циклическая ссылка:
var myJsObj = {};
var myDomElt = document.getElementById('myId');
myJsObj.domElt = myDomElt;
myDomElt.jsObj = myJsObj;
Однако безопасно добавить свойство, которое просто содержит примитивное значение:
myDomElt.fullTitle = "My DOM Element";
Хотя предупреждение о том, что стандарт DOM может измениться, все еще важно; Что если HTML7 определяет свойство fullTitle
для элементов DOM? Ваш сайт будет иметь непредсказуемое поведение.
Альтернативой является использование функции $. Data в jQuery :
$(myDomElt).data('fullTitle', 'My Dom Element');
var retrieved = $(myDomElt).data('fullTitle');