.data () jQuery melakukan beberapa hal tetapi tidak menambahkan data ke DOM sebagai atribut. Saat menggunakannya untuk mengambil atribut data, hal pertama yang dilakukan adalah membuat objek data jQuery dan menetapkan nilai objek ke atribut data. Setelah itu, pada dasarnya dipisahkan dari atribut data.
Contoh:
<div data-foo="bar"></div>
Jika Anda mengambil nilai atribut yang digunakan .data('foo')
, itu akan mengembalikan "bar" seperti yang Anda harapkan. Jika Anda kemudian mengubah atribut menggunakan .attr('data-foo', 'blah')
dan kemudian menggunakan .data('foo')
untuk mengambil nilai, itu akan mengembalikan "bilah" meskipun DOM mengatakan data-foo="blah"
. Jika Anda menggunakan .data()
untuk menetapkan nilai, itu akan mengubah nilai dalam objek jQuery tetapi tidak di DOM.
Pada dasarnya, .data()
adalah untuk mengatur atau memeriksa nilai data objek jQuery. Jika Anda memeriksanya dan belum memilikinya, nilai itu dibuat berdasarkan atribut data yang ada di DOM. .attr()
adalah untuk menyetel atau memeriksa nilai atribut elemen DOM dan tidak akan menyentuh nilai data jQuery. Jika Anda membutuhkan keduanya untuk berubah, Anda harus menggunakan keduanya .data()
dan .attr()
. Kalau tidak, tetap dengan satu atau yang lain.
.data()
kecuali Anda benar-benar punya alasan untuk menggunakannya.attr()
.