Ich kann einfach meinen Kopf nicht darum wickeln. Ich habe versucht, einigen Elementen ein Daten-Diff-Attribut hinzuzufügen. Scheint zu funktionieren, aber kein solches Attribut erscheint im HTML. Ich keine große Sache dachte, öffnete Entwickler-Tools und meine Spur des Denkens ging so:Einstellung benutzerdefiniertes Datenattribut mit jQuery-Fehler
Lässt wieder dieses Attribut gesetzt:
console: $(obj).data('diff','10');
output: [div.cont]
Gut, lassen Sie uns das Attribut überprüfen dann:
console: $(obj).data('diff')
output: "10"
Großartig, aber in HTML immer noch scheint es nicht, lassen sie uns dies überprüfen:
console: $(obj)[0]
output:
<div class="cont" data-month="8" data-round="1">
(Tom) 8
<div class="secCol">AUG</div>
</div>
Hmm, ja vielleicht gibt es keine Daten-diff, wenn ich das versuchen:
console: $(obj)[0].data('diff','10')
output: Uncaught TypeError: $(...)[0].data is not a function(…)
Ich denke, es hat etwas mit DOM-Elementen vs jQuery-Objekten (bereits gelesen this) zu tun, aber ich weiß nicht, was anderes zu versuchen. Mein Code ist dies:
$('.cont[data-round="'+round+'"]').each(function(i, obj) {
var month = $(obj).data('month');
var diff = Math.abs(myMonth-month);
$(obj).data('diff', diff);//Here is the problem
});
'$ (oBJ) [0]' gibt Ihnen das HTML-Element, '.data()' ist ein jQuery-f Salbung. Problemumgehung: '$ ($ (obj) [0]). Data ('diff')' –