.data()
- как уже сказал Якуб - не является постоянным между запросами, в то время как куки есть (вы даже можете дать им время истечения!).
Однако есть еще одна большая разница: установлено .data()
на элементе и не может быть легко извлечен без наличия элемента (или объекта jQuery, содержащего его), в то время как файлы cookie являются простыми ключами => отображениями значений для всего документа.
О, и вы не можете хранить сложные данные (массивы,объекты) в файлах cookie, не сериализовав их каким-либо образом (JSON выполнит эту работу).