Perbedaan mengambil data tag menggunakan attr() dengan data()

Arwan Prianto Mangidi
0


Perbedaan antara menggunakan .attr() dan .data() dalam jQuery terletak pada cara kedua metode ini menangani atribut data pada elemen HTML.

1. attr() (Attribute)

  • Fungsi Utama: Mengambil atau menetapkan nilai dari atribut HTML secara langsung di DOM.
  • Menggunakan: Atribut HTML yang sebenarnya, seperti yang ditulis di elemen.
  • Akses Langsung ke DOM: Mengambil atau mengubah nilai secara langsung dari DOM. Jadi, setiap kali kamu memanggil .attr(), jQuery akan membaca atau menulis langsung ke elemen DOM yang bersangkutan.
  • Contoh:
    html:
    <button id="myButton" data-name="John">Click me</button>
    
    javascript:
    var name = $('#myButton').attr('data-name'); // Mengambil 'John'
    
  • Kasus Penggunaan: Berguna ketika kamu ingin mengambil nilai dari atribut yang ditentukan secara eksplisit dalam HTML, atau jika kamu mengubahnya secara langsung dengan .attr().


2. data() (Data API)

  • Fungsi Utama: Mengambil atau menetapkan nilai dari atribut data-* dengan menggunakan mekanisme caching internal jQuery.
  • Data Cache jQuery: Ketika kamu pertama kali memanggil .data(), jQuery membaca atribut data-* dari DOM dan menyimpannya dalam cache internal. Jika kamu mengubah nilai menggunakan .data(), perubahan tersebut disimpan dalam cache, tetapi atribut data-* pada elemen DOM tidak berubah.
  • Menggunakan Caching: Nilai yang kamu ambil setelah pertama kali memanggil .data() tidak selalu berasal langsung dari DOM, tetapi dari cache jQuery. Ini berarti perubahan yang dilakukan dengan .attr() setelah .data() dipanggil tidak akan tercermin saat memanggil .data() lagi.
  • Contoh:
    html:
    <button id="myButton" data-name="John">Click me</button>
    
    javascript:
    var name = $('#myButton').data('name'); // Mengambil 'John'
    
  • Kasus Penggunaan: Berguna saat kamu ingin menyimpan data yang bisa digunakan oleh jQuery, tetapi tidak perlu mengubah atribut HTML DOM asli. Cocok untuk menyimpan data yang sementara atau terkait dengan interaksi JavaScript tanpa memperbarui elemen HTML.

Perbedaan Utama:

Fitur.attr().data()
Akses DataMengakses atribut HTML secara langsung.Menggunakan mekanisme caching internal jQuery.
Perubahan DOMSetiap perubahan langsung terlihat di DOM.Perubahan disimpan dalam cache jQuery.
KinerjaSelalu membaca atau menulis langsung ke DOM.Cepat setelah data dicache, tidak selalu menyentuh DOM.
Kasus PenggunaanUntuk memanipulasi atribut HTML langsung.Untuk menyimpan data di elemen tanpa mengubah DOM.

Contoh Ilustrasi:

html:
<button id="myButton" data-name="John">Click me</button>

Menggunakan .attr():

javascript:
// Mengambil nilai dari atribut HTML
console.log($('#myButton').attr('data-name')); // Output: 'John'

// Mengubah atribut HTML
$('#myButton').attr('data-name', 'Doe');
console.log($('#myButton').attr('data-name')); // Output: 'Doe'

Menggunakan .data():

javascript:
// Mengambil nilai menggunakan data()
console.log($('#myButton').data('name')); // Output: 'John'

// Mengubah nilai menggunakan data()
$('#myButton').data('name', 'Doe');
console.log($('#myButton').data('name')); // Output: 'Doe'

// Tapi jika kamu memeriksa atribut DOM secara langsung:
console.log($('#myButton').attr('data-name')); // Output: 'John' (tidak berubah di DOM!)


Kapan Menggunakan .attr() atau .data():


.attr() 

ketika kamu ingin bekerja langsung dengan atribut HTML dan memastikan perubahan tercermin dalam DOM (misalnya untuk manipulasi atau interaksi antar elemen dalam aplikasi web).

.data() 

ketika kamu bekerja dengan data yang hanya diperlukan dalam JavaScript dan tidak perlu diubah di HTML, terutama untuk caching data sementara yang tidak perlu terlihat di DOM.

Dalam kasus kamu sebelumnya, menggunakan .attr() lebih cocok karena kamu ingin memastikan data diperbarui di DOM dan tersedia secara real-time, bukan dari cache jQuery.

Posting Komentar

0 Komentar
Posting Komentar (0)