jQuery$("..").data("key", value)
メソッドはdata-key属性が存在する場合、それを設定しますか?
AdamFreemanのProjQueryは、次のように述べています。
ヒントdataメソッドは、値を設定するときにデータ属性も考慮に入れます。[sic] productなどのキーを指定すると、dataメソッドは、data-productなどの対応するHTML5データ属性があるかどうかを確認します。ある場合は、指定した値が属性に割り当てられます。そうでない場合、データはjQueryによって内部的に保存されます。
しかし、私はそうではないと思いました、そして私が実行したテストはそうではないことを意味します。(正誤表のセクションを確認しましたが、何もありません)
完全なコードは以下のとおりですが、メソッドを呼び出してdata-name属性を設定するとattr
、属性値が変更され、[chrome要素]タブに表示され、に取得されnewValue
ます。dataメソッドで設定すると、どちらの条件も満たされません。data()
を使用すると、値が存在する場合でも、常に内部で値が設定され、属性には設定されないように見えます。
残念ながら、ドキュメントでhtml5データ属性についてのみ言及されているのは、キーのみを受け取り、付随する値を返すデータメソッドのセクションです。の説明で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>