$('div').data('info', 1);
alert($('div').data('info'));
//this works
$('div[data-info="1"]').text('222');
//but this don't work
Saya membuat elemen dalam jquery. Setelah itu, saya ingin menambahkan atribut "data". Dia suka dan ditambahkan, tetapi di DOM, ini tidak terlihat, dan saya tidak bisa mendapatkan item, menggunakan
$('div[data-example="example"]').html()
jquery
html
custom-data-attribute
Luntegg
sumber
sumber
.data()
kecuali Anda benar-benar punya alasan untuk menggunakannya.attr()
..data()
tidak bekerja Itu tidak menambahkan atribut data ke DOM, dan saya tidak mendapatkan elemen dengan atribut data ...data(key, val)
akan membuat attr. ada yang tahu kenapa tidak?Note that this doesn't create an actual data-info attribute. If you need to create the attribute, use .attr():
Ini adalah kunci masalah saya. Terima kasih banyak..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:
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 mengatakandata-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.sumber
di Jquery " data " tidak disegarkan secara default:
Anda akan menggunakan " attr " sebagai gantinya untuk pembaruan langsung:
sumber
sumber
Menggunakan
.data()
hanya akan menambahkan data ke objek jQuery untuk elemen itu. Untuk menambahkan informasi ke elemen itu sendiri, Anda perlu mengakses elemen itu menggunakan jQuery.attr
atau asli.setAttribute
Untuk mengakses elemen dengan set atribut, Anda bisa memilih berdasarkan atribut itu seperti yang Anda catat di posting Anda (
$('div[data-info="1"]')
), tetapi ketika Anda menggunakannya.data()
Anda tidak bisa. Untuk memilih berdasarkan pada.data()
pengaturan, Anda perlu menggunakan fungsi filter jQuery.jsFiddle Demo
sumber
untuk mendapatkan teks dari a
sumber