4

奇妙な問題 - 何かが足りないのかもしれません。

私のコード:

HTML

<div id="container">
    <span data-foo="initial content">Blabla</span>    
</div>

jQuery

console.log($("span").data("foo")); //initial content
console.log($("#container").html()); //<span data-foo="initial content">Blabla</span>   

$("span").data("foo", "new content");

console.log($("span").data("foo")); //new content
console.log($("#container").html()); //<span data-foo="initial content">Blabla</span>   <----- ?!?!?!?!

最後の行は、予期しない動作を示しています。によって以前に行われた変更.data("foo", "new content")は、コンテンツを読み取るときに反映されません.html()

フィドル: http://jsfiddle.net/sSZjh/

4

2 に答える 2

1

.datajQuerydata-では属性を読み取るだけで、設定はしません。.attr('data-...')データ属性を設定するために使用する必要があります。

jQuery 1.4.3 以降、HTML 5 の data- 属性は、jQuery のデータ オブジェクトに自動的に取り込まれます。ダッシュが埋め込まれた属性の処理は、W3C HTML5 仕様に準拠するように jQuery 1.6 で変更されました。

http://api.jquery.com/data/から

于 2013-05-05T10:42:20.747 に答える
1

data 属性を使用してデータを保存する場合、jQuery は実際には HTML を更新しません。ビジュアル属性は、属性の初期データ値を設定するために用意されています。さらに、jQuery は単に DOM ノード オブジェクトに対して値をキャッシュします。

于 2013-05-05T10:43:05.143 に答える