不同的结果attr所和数据

问题描述:

<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也许别的东西会覆盖这个值。 –

.attr将读取的实际属性

.data将读取该数据项的当前值。如果您的代码已更改该值(即,$('#getMessage').data('sid',160)),该值将成为当前值。

+0

如果更新。它会在HTML中更新对不对? –

+1

@RahulKumar绝对不是 – Jamiec

+0

@RahulKumar:它会更新数据属性而不是属性值。这就是它没有体现在属性中的原因。 –

data()功能将数据存储到一个特定的元素与指定的元件和/或返回所设定的值相关联

存储任意数据。

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

在另一方面,attr()获取或设置属性形成元件。

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

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

的要求工作的例子......,请注意,我可以改变数据属性的值,而不改变实际的属性

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>