5

data-demo要素の属性を変更していますがdiv、別のイベントでそれをチェックしたい場合、現在の値ではなく常に初期値が表示されます。

これは私が使用しているコードです:

$('#showValue').click(function(){
    alert($('.value').data('demo'));
});

$('.update').click(function(){
   $('.value').text('updated').attr('data-demo', 'updated');
});

なぜこうなった?

これが私が話している例のフィドルです: http://jsfiddle.net/f5Cpm/

ありがとう。

4

2 に答える 2

9

内部データが最初に初期化された後、値を取得または設定するために属性に戻ることはありません。したがって、その要素で .data を既に使用している場合、属性を更新しても .data() に格納されているものは更新されません。

詳細はこちら

于 2013-05-02T12:41:59.630 に答える
6

jQuery.data()関数は、HTML5 データセット機能を真にサポートしているわけではなく、すべての html5 データセット データを独自のデータ コレクションに読み込みます。その結果、属性を変更してデータセットを更新しても、jQuery の内部データ コレクションには反映されません。

dataset.demoつまり、結果的に 、$().data("demo")またはを使用する必要があります$().attr("data-demo")。2番目の利点は、アプリケーションの残りの部分にjqueryを使用している場合、もちろんブラウザとjQueryの一部にまたがることです。

于 2013-05-02T12:43:11.507 に答える