Maafkan saya karena tidak lebih spesifik tentang ini. Saya memiliki bug yang aneh. Setelah dokumen dimuat, saya mengulang beberapa elemen yang awalnya memiliki data-itemname="", dan saya menetapkan nilai tersebut menggunakan .attr("data-itemname", "someValue").
Masalah: Ketika saya kemudian mengulang melalui elemen-elemen itu, jika saya melakukannya elem.data().itemname, saya mengerti "", tetapi jika saya melakukannya elem.attr("data-itemname"), saya mengerti "someValue". Ini seperti .data()getter jQuery hanya mendapatkan elemen yang pada awalnya ditetapkan untuk berisi beberapa nilai, tetapi jika awalnya kosong, dan kemudian disetel, maka .data()tidak akan mendapatkan nilainya nanti.
Saya telah mencoba membuat ulang bug ini tetapi belum bisa.
Edit
Saya telah membuat ulang bug! http://jsbin.com/ihuhep/edit#javascript,html,live
Juga, cuplikan dari tautan di atas ...
JS:
var theaters = [
{ name: "theater A", theaterId: 5 },
{ name: "theater B", theaterId: 17 }
];
$("#theaters").html(
$("#theaterTmpl").render(theaters)
);
// DOES NOT WORK - .data("name", "val") does NOT set the val
var theaterA = $("[data-theaterid='5']");
theaterA.find(".someLink").data("tofilllater", "theater5link"); // this does NOT set data-tofilllater
$(".someLink[data-tofilllater='theater5link']").html("changed link text"); // never gets changed
// WORKS - .attr("data-name", "val") DOES set val
var theaterB = $("[data-theaterid='17']");
theaterB.find(".someLink").attr("data-tofilllater", "theater17link"); // this does set data-tofilllater
$(".someLink[data-tofilllater='theater17link']").html("changed link text");
HTML:
<body>
<div id="theaters"></div>
</body>
<script id="theaterTmpl" type="text/x-jquery-tmpl">
<div class="theater" data-theaterid="{{=theaterId}}">
<h2>{{=name}}</h2>
<a href="#" class="someLink" data-tofilllater="">need to change this text</a>
</div>
</script>
elem.data("itemname")tidak elem.data().itemname?
elem.data().itemname = somevalue;tidak mengubah data yang mendasarinya.)