如果存在,jQuery$("..").data("key", value)
方法会设置 data-key属性吗?
Adam Freeman 的 Pro jQuery声明它确实:
提示data 方法在设置值时也会考虑数据属性。当您指定一个键时,例如 [sic] 产品,data 方法会检查是否存在相应的 HTML5 数据属性,例如 data-product。如果存在,则将您指定的值分配给该属性。如果不是,则数据由 jQuery 内部存储。
但我认为它没有,我运行的测试表明它没有。(我检查了勘误表部分——没有)
完整代码如下,但不足之处在于,当我通过调用该attr
方法设置 data-name 属性时,属性值发生了变化,可以在 chrome 元素选项卡中看到,并检索到newValue
. 当我用数据方法设置时,这两个条件都不满足;似乎 usingdata()
总是在内部设置值,而不是在属性上,即使存在一个。
不幸的是,文档中唯一提到的 html5 数据属性是在 data 方法的部分中,它只接受一个键,并返回伴随值;的描述data("key", value)
似乎根本没有提到 html5 数据属性。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.js"></script>
<script type="text/javascript">
$(function () {
var oldValue = $("#d").data("name");
alert("old value " + oldValue);
$("#d").data("name", "Adam");
//$("#d").attr("data-name", "Adam");
var newValue = $("#d").attr("data-name");
alert("new value " + newValue);
});
</script>
</head>
<body>
<div id="d" data-name="none"></div>
</body>
</html>