jQuery $("..").data("key", value)
メソッドがデータキーアトリビュート(存在する場合)を設定しますか?データ( "key"、value)メソッドはデータ属性を設定していますか?
Adam Freeman's Pro jQueryはそれがないと述べている:
ヒントデータ方式は、データが時に の設定値だけでなく、アカウントに属性を取ります。このような[sic]製品のキーを指定すると、 データメソッドは、対応するHTML5データ 属性(data-productなど)があるかどうかを確認します。存在する場合、指定された値 が属性に割り当てられます。そうでなければ、データはjQueryによって内部的に格納された です。
しかし、私はそうではないと思っていました。私がテストしたのは、そうではないということです。 (私は正誤情報セクションをチェックしました - 何もありません)
完全なコードは以下の通りですが、それはattr
メソッドを呼び出してdata-name属性を設定すると属性値が変更され、chrome要素タブに戻り、newValue
に検索されます。データメソッドで設定すると、これらの条件のいずれも満たされません。 data()
を使用すると、値が内部的に設定され、属性に値が設定されていなくても設定されているようです。
残念ながら、docs' only mention of html5 data-attributesはデータメソッドのセクションにあり、キーのみを受け取り、付随する値を返します。 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>
これは正しいです。 "data-"で始まる要素に追加する属性はすべて内部データオブジェクトに格納されますが、これらの値に対する変更はvisible属性に反映されません。また、データオブジェクトに追加されたデータ値は、その要素の可視属性として追加されません。 –