No.518


【jQuery】data属性の値の変更方法【Javascript】

data属性を書き換えても変わらないとお嘆きの貴方へ

 HTMLタグのdata属性はJavascriptによる制御時に何かと便利なので利用している人も多いだろう。

 ところがこの属性、特徴を知ってないと容易に嵌まる。ほんとに嵌まる。

 というわけで、聞かれたときの回答内容をメモ。


前提

 jQuery.data() メソッドによる変更は、 DOMの操作を行わずメモリ内のキャッシュを変更する だけである。
 そのため下記の特徴を持つ。

  • DOM要素のdata属性を書き換えても data() メソッドで取得できる値は変わらない。
  • data() メソッドで値を書き換えても、DOM要素のdata属性は変わらない。

 その上でjQueryのメソッドの特徴は下記となる。

jQuery.attr() メソッド
  • DOM要素を書き換えることができる。( = attr() の値は変わる。)
  • data() の値は変わらない。
jQuery.data() メソッド
  • data() の値を書き換えることができる。
  • DOM要素は変わらない。( = attr() の値は変わらない。)

完全な解決を望むなら

 jQuery.data()jQuery.attr() を両方実行して、キャッシュもDOMも書き換えること。

 コストは倍だけどトラブルが起きなくなるメリットは…精神的に大きい…かも。