Verzeihen Sie mir, dass ich nicht genauer darauf eingegangen bin. Ich habe so einen seltsamen Fehler. Nachdem das Dokument geladen wurde, schleife ich einige Elemente, die ursprünglich vorhanden waren data-itemname="", und setze diese Werte mit .attr("data-itemname", "someValue").
Problem: Wenn ich diese Elemente später durchschleife elem.data().itemname, bekomme ich "", wenn ich es tue elem.attr("data-itemname"), aber wenn ich es tue , bekomme ich "someValue". Es ist, als würde der .data()Getter von jQuery nur Elemente abrufen, die anfänglich so eingestellt sind, dass sie einen bestimmten Wert enthalten. Wenn sie jedoch ursprünglich leer sind und später festgelegt werden, .data()wird der Wert später nicht mehr abgerufen.
Ich habe versucht, diesen Fehler wiederherzustellen, konnte es aber nicht.
Bearbeiten
Ich habe den Fehler neu erstellt! http://jsbin.com/ihuhep/edit#javascript,html,live
Auch Ausschnitte aus dem obigen Link ...
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")nicht nicht elem.data().itemname?
elem.data().itemname = somevalue;also nicht die zugrunde liegenden Daten.)