2016-07-26 76 views
-1
<p id="getMessage" data-sid="158"> 
    <strong>Name</strong> : Rahul Kumar<br> 
    <strong>Total </strong> : 25<br> 
</p> 

這是用我的動態生成HTML的jQuery不同的結果attr所和數據

現在,這是穩定和修復

我在康壽執行一些命令,發現這些結果

$('#getMessage').attr('data-sid'); 
"158" 

這是預期的。

但是,當我執行此

$('#getMessage').data('sid'); 
160 

它顯示了160,應該是158吧?我使用$('#getMessage').attr('data-sid', result.studentDetails.SID);來設置它。

+0

一個簡單的測試會告訴你它返回相同的結果,你可能在你的代碼中有其他的東西... – WalksAway

+0

結果是一樣的,請參閱https://jsfiddle.net/syjtqp30/。你的網頁上是否有另一個ID爲getMessage的元素? – Sam

+0

非常適合我:http://output.jsbin.com/pesoki也許別的東西會覆蓋這個值。 –

回答

3

.attr將讀取的實際屬性

.data將讀取該數據項的當前值。如果您的代碼已更改該值(即,$('#getMessage').data('sid',160)),該值將成爲當前值。

+0

如果更新。它會在HTML中更新對不對? –

+1

@RahulKumar絕對不是 – Jamiec

+0

@RahulKumar:它會更新數據屬性而不是屬性值。這就是它沒有體現在屬性中的原因。 –

0

data()功能將數據存儲到一個特定的元素與指定的元件和/或返回所設定的值相關聯

存儲任意數據。

jQuery.data($('#element'), data); 

在另一方面,attr()獲取或設置屬性形成元件。

$('div').attr('data-test', 'test'); 

<div data-test="test"></div> 
0

的要求工作的例子......,請注意,我可以改變數據屬性的值,而不改變實際的屬性

console.log($('#getMessage').attr('data-sid')); 
 
console.log($('#getMessage').data('sid')); 
 

 
$('#getMessage').data('sid', 160); 
 

 
console.log($('#getMessage').attr('data-sid')); 
 
console.log($('#getMessage').data('sid'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<p id="getMessage" data-sid="158"> 
 
    <strong>Name</strong> : Rahul Kumar 
 
    <br> 
 
    <strong>Total </strong> : 25 
 
    <br> 
 
</p>

相關問題