Bu konuda daha spesifik olmadığım için beni affet. Çok garip bir böceğim var. Doküman yüklendikten sonra, orijinal olarak sahip olan bazı öğeleri döngüye data-itemname=""alıyorum ve bu değerleri kullanarak ayarlıyorum .attr("data-itemname", "someValue").
Sorun: Daha sonra bu öğeler arasında döngü gerçekleştirdiğimde, yaparsam elem.data().itemname, alırım "", ancak yaparsam elem.attr("data-itemname"), alırım "someValue". Tıpkı jQuery'nin .data()alıcısının yalnızca başlangıçta bir değer içerecek şekilde ayarlanan öğeleri alması gibi, ancak bunlar başlangıçta boşsa ve daha sonra ayarlanmışsa, .data()değeri daha sonra alamaz.
Bu hatayı yeniden oluşturmaya çalışıyorum ama yapamadım.
Düzenle
Böceği yeniden yarattım! http://jsbin.com/ihuhep/edit#javascript,html,live
Ayrıca, yukarıdaki bağlantıdan pasajlar ...
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")değil elem.data().itemname?
elem.data().itemname = somevalue;temeldeki verileri değiştirmez.)