在DOMContenLoaded事件处理程序内的表单节点上设置数据设置对象时,我们面临一个奇怪的行为,我创建了一个简单的jsfiddle来描述问题:https://jsfiddle.net/804q13g2/
您可以看到,我在form#me
上设置了三种不同的数据属性,一种是内联的,一种是在DOMContentLoadad内部,另一种是在jQuery文档就绪事件处理程序中;当您按下按钮时,数据设置将粘贴在屏幕上,您会看到缺少第二个数据属性"ciao":"mondo"
。
您能帮我理解为什么会这样吗?
无论如何,我已经看到在Stack Overflow的此处片段中禁用BabelJS / ES5可以正常工作!
document.addEventListener("DOMContentLoaded",function() {
$("#me").data("ciao","mondo");
})
$(function() {
$("#me").data("ciao2","mondo2");
$("#btn").click(function() {
var a = $(document.createElement("p")).text(JSON.stringify($("#me").data()));
$("#banner-message").append(a);
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="me" data-test="passed">
<div id="banner-message">
<p>Hello World</p>
<button type="button" id="btn">Change color</button>
</div>
</form>