くわこのpermission denied.

WEBエンジニアの僕がぶつかった技術的な問題や発見

jqueryのattrでdata属性を書き換えない方がいいっぽい。

f:id:mask0702:20150616162655j:plain

小一時間無駄にしたので怒りのシェア

$("#hoge").attr(data-text, 'page');

しても

これで書き換えできたのですが、実はjQueryで扱うjQuery.attr()メソッドではjQueryオブジェクト上は書き換えできていません。再度、取得しても、取得できる結果は書き換え前のデータが返ってくるだけです。


らしい。じゃあ全部data()で書き換えればいいじゃん。と思ったら

またjQuery.data()の場合は、jQueryオブジェクトとしてのデータ名に対する値は書き換えられるのですが、逆にjQueryのキャッシュ仕様が原因でHTML上には反映しない(HTML属性値は書き換えない)ため、例えばCSSでHTMLの属性値にアクセスするような場合などに属性値に応じたスタイルの変更が反映されない事態などが起こり得ます。このようにjQueryではキャッシュ仕様で、jQuery.data()メソッドを使うにしろ、jQuery.attr()メソッドを使うにしても嵌ることになる要因があるのです。


マジでか...( ・´ー・`)


w3g.jp