Проблема в том, что вы создаете разные объекты для присоединения и извлечения данных. Каждый раз, когда вы вызываете $(selector)
, вы создаете новый объект jQuery, и это будет отличаться от того, к которому вы прикрепили данные.
Вот простой пример:
$.data($('#test'),'test','hej');
alert($.data($('#test'),'test'));
Это даст вам undefined
.
Именно поэтому $.data
ожидает элемент DOM, а не объект jQuery. Независимо от того, как вы извлекаете определенный элемент DOM, ссылка всегда одна и та же.
Так что либо передайте элемент DOM ($('#test')[0]
), либо лучше , используйте $('#test').data()
.