Pardonnez-moi de ne pas avoir été plus précis. J'ai un bug très étrange. Après le chargement de la documentation, je boucle certains éléments qui ont à l'origine data-itemname=""
et j'ai fixé ces valeurs à l'aide de .attr("data-itemname", "someValue")
.
Question : Lorsque je passe ensuite en boucle sur ces éléments, si je fais elem.data().itemname
J'obtiens ""
mais si je le fais elem.attr("data-itemname")
J'obtiens "someValue"
. C'est comme la fonction .data()
n'obtient que les éléments qui sont initialement définis pour contenir une valeur, mais s'ils sont vides à l'origine, puis définis par la suite, alors .data()
ne reçoit pas la valeur plus tard.
J'ai essayé de recréer ce bogue mais je n'y suis pas parvenu.
Editer
J'ai recréé le bug ! http://jsbin.com/ihuhep/edit#javascript,html,live
Aussi, des extraits du lien ci-dessus...
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>