0

我有一个元素,我使用 jQuery 的 .data() 方法存储一些数据:

$('#myElement').data('rot', '10');

如果我为元素拉出外层HTML,将其保存在服务器上,关闭浏览器,然后返回并将外层HTML从服务器拉回浏览器,数据值就消失了,尽管我分配了所有内联样式和属性到元素还在。据此,我假设 .data() 方法的工作原理是让 JavaScript 的当前实例化将数据保存在一些本地内存中,该内存也具有指向该元素的链接。因此,只要您不关闭 JavaScript,即关闭浏览器,该方法就可以正常工作。如果你关闭浏览器,数据就消失了。另一方面,内联样式和属性成为outerHTML 的一部分,因此请转到服务器并完整返回。我看对了吗?

谢谢

4

2 回答 2

2

试试这个代码

$('#myElement').attr('data-rot', 10);
于 2013-07-31T08:55:29.983 回答
0

如果所有其他都失败,请尝试使用纯 JavaScript:

如果您想使用现有的原生 JavaScript 检索或更新数据属性,则可以使用getAttributesetAttribute方法来实现,例如:

var myEl = document.getElementById('myElement');

    myEl.setAttribute('rot', '10');

var attributeRed = myEl.getAttribute('rot');

此方法适用于所有现代浏览器,但它不是 data- 属性的预期使用方式。

 
实现相同目的的第二种(新的和改进的)方法是访问元素的数据集属性:

var myEl = document.getElementById('myElement');

    myEl.dataset.rot = '10';

var attributeRed = myEl.dataset.rot;

此数据集属性(新 HTML5 JavaScript API 的一部分)将返回所有选定元素的数据属性的 DOMStringMap 对象。使用这种方法时,您可以放弃 data- 前缀,而不是使用完整的属性名称,而是直接使用您分配给它的名称来引用自定义数据。包含连字符的数据属性名称将被去掉连字符并转换为 CamelCase。

(来源:http: //html5doctor.com/html5-custom-data-attributes/

但是,为了跨浏览器的兼容性,仍然建议使用原生的 getAttribute 和 setAttribute 方法。

于 2013-07-31T09:38:17.040 回答