2012-02-02 2 views
7

に表示されていない変更は、私はこのHTMLを持っている:更新HTMLデータが正しく属性が、ページ

<input type="text" id="query" data-source="whatever"> 

私はデータを変更するいくつかのjqueryのは、「何でも」「テスト」への変更

$(function() { 
    $('#query').data('source', 'test'); 
    console.log($('#query').data()); 
}); 
sucessfullyすなわち属性きました

Chromeでページを検査すると、データ属性は更新されていません。印刷できますが、新しい値は検査できません。非常に混乱。何か案は?ここ

あなたはこのコードを持っているあなたのフィドルでfiddle

+0

ここでは:http://jsfiddle.net/r5YV9/7/ – ale

答えて

9

データは、要素(使用attrまたはそのための小道具)に保存されていない見てみましょう。代わりに、jQueryは$ .cacheにそれを保持します。

+1

'$( '#query')。data()'は、要素に格納されたすべてのデータ属性のマップを表示します。 http://jsfiddle.net/r5YV9/10/。それらにアクセスするために 'prop'または' attr'を使う必要はありません。 – ShankarSangoli

0

です。 $('#query')が関数呼び出しであり、あなたはそれに.data('source', 'test')の応答をassingingされているので、エラー(「割り当てに無効な左辺」)を有する

$(function() { 
    $('#query') = $('#query').data('source', 'test'); 
    console.log($('#query').data()); 
}); 

$(function() { 
    $('#query').data('source', 'test'); 
    console.log($('#query').data()); 
}); 

変更それはそれが正常に動作します。

http://jsfiddle.net/r5YV9/10/

1

データ属性を使ってスタイルを適用するような気がしている場合は、jQueryのキャッシュを更新する必要があります。私はいつもで、jQueryの変数の前に$を置く:

var data = function($element, key, value) { 
    $element.data(key, value); 
    $element.attr('data-'+key, value); 
} 

data($element, key, value); 

注両方を行う方法にDOMを更新しません

jQueryのうちスワップ

$element.data(key, value); 

誰かがそれについて混乱している。 ;)

関連する問題