2016-10-02 4 views
-3

私は私が試したの にデータを設定したい文字列JQUERY HTMLコンテンツのデータを設定する方法は?

'<div>hello world</div>' 

(私はSの内容を変更することはできません)

が含まれている変数sを持っている:

$(s).data('value', 50); 
$($(s)).data('value', 50); 

をどれでもアイディア ?

s = '<div>hello world</div>'; 
s = $(s).data('value', 50); // works now !!! 
console.log($(s).data('value')); 
+0

sはいくつかのAJAX結果です! – yarek

+0

全体の問題は、元の同じ文字列から毎回新しいオブジェクトを作成することに起因します。その文字列は変更されません – charlietfl

答えて

4

最初の例($(s).data('value', 50);)はうまくいきます。 jQueryがより良いパフォーマンスを得るために内部キャッシュに属性dataを保持しているので、DOMでこの更新が表示されることはありません。あなたはバックアウトされた値を読み取ることによって、それが働い確認することができます:あなたはDOMでdata-value属性を更新することを好む場合は、attr()を使用

var $div = $('div'); 
 

 
console.log('before: ' + $div.data('value')); 
 
$div.data('value', 50); 
 
console.log('after: ' + $div.data('value'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div>hello world</div>

、次のように:

var $div = $('div'); 
 
$div.attr('data-value', 50);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div>hello world</div>

DOMインスペクタ上記のコードの効果を確認してください。あなたが仕事をshowngているものにすることができ

+0

私の最初の例はうまくいく:$(s).data( 'value')私は未定義です! – yarek

+2

その場合は、コードの完全な例を提供してください。あなたが与えた小さなものは無用の隣にあります。また、上記の動作しない理由がないので、コンソールでエラーをチェックしてください。 –

0

唯一の方法は、そのオブジェクトから値を取得する...元のオブジェクトへの参照を格納することであるあなたは、現在2つのオブジェクトを作成してやっている

var $s = $(s).data('value', 500); 
console.log($s.data('value')); 

同じ元の文字列を使用しており、これらのオブジェクト間の参照はありません

$(s) == $(s)// false 
関連する問題