2016-10-02 64 views
-3

我有一個包含字符串變量sJQUERY如何設置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);)工作正常。您不會在DOM中看到它的更新,因爲jQuery在內部緩存中包含data屬性以獲得更好的性能。您可以驗證它的工作通過讀取值退了出來:

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>

如果您希望以更新DOM的data-value屬性,使用attr(),像這樣:

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檢查器看看上面代碼的效果。

+0

我的第一個例子是否可以正常工作:$(s).data('value')GIVES me UNDEFINED! – yarek

+2

在這種情況下,請提供您的代碼的完整示例。你給的小事幾乎沒用。還請檢查控制檯是否存在錯誤,因爲上述內容沒有理由不起作用。 –

0

你可以讓你的工作showng的唯一方法是將其存儲到原始對象的引用......然後從該物體中獲得的價值

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

目前你正在做什麼是創建兩個對象使用相同的原始字符串,並且這些對象之間沒有引用

$(s) == $(s)// false