kurtov Важная особенность. В момент первого обращения к элементу, все атрибуты data-* будут считаны в память jQuery и доступны через метод jQuery.fn.data, но если добавить еще один атрибут (data-second-attr) то он не будет доступен через данный метод.
Например элемент:
<div attr="first" data-name1="second"></div>
//Все доступно сразу
$('div').attr('attr'); // 'first'
$('div').attr('data-name1'); // 'second'
$('div').data('name1'); // 'second'
//Если добавить атрибут методом jQuery.fn.attr (изменение DOM)
$('div').attr('data-name2', 'third');
//то
$('div').attr('data-name2'); // 'third'
$('div').data('name2'); // undefined
//Если 'добавить' атрибут методом jQuery.fn.data (нет изменений DOM)
$('div').data('name3', 'four');
//то
$('div').attr('data-name3'); // undefined
$('div').data('name3'); // 'four'