Javascript 在DOM中存储数据的正确方法是什么

Javascript 在DOM中存储数据的正确方法是什么,javascript,asp.net,jquery,html,dom,Javascript,Asp.net,Jquery,Html,Dom,我最近在各种HTML元素中使用了title标记,以JSON格式在DOM中存储数据 这是一个糟糕的方法吗(我想是的)?实现这一点的正确方法是什么?我的意思是“很好用” 工作得很好,但我还是认为有更好的方法来做到这一点不 顺便问一下,HTML元素的标题标签实际上是如何工作的?我似乎找不到它到底在哪里被使用 PSS:我还可以得到基于jQuery和非jQuery的响应吗?(很抱歉这么挑剔)使用jquery jQuery.data()方法允许我们 将任何类型的数据附加到DOM 以一种安全的方式使用元素 循

我最近在各种HTML元素中使用了title标记,以JSON格式在DOM中存储数据

这是一个糟糕的方法吗(我想是的)?实现这一点的正确方法是什么?我的意思是“很好用”

工作得很好,但我还是认为有更好的方法来做到这一点不

顺便问一下,HTML元素的标题标签实际上是如何工作的?我似乎找不到它到底在哪里被使用

PSS:我还可以得到基于jQuery和非jQuery的响应吗?(很抱歉这么挑剔)

使用jquery

jQuery.data()方法允许我们 将任何类型的数据附加到DOM 以一种安全的方式使用元素 循环引用,因此是免费的 从内存泄漏。jQuery确保 当DOM元素出现时,数据将被删除 通过jQuery方法删除,以及 当用户离开页面时。我们可以 为一个对象设置几个不同的值 单个元素并检索它们 后来:


在jQuery世界中,使用元数据插件通常被认为是最佳实践,因为它是一个正式的jQuery插件,并且还支持HTML5数据属性。欲了解更多信息,请查看此

这几乎是打你耳光的合法理由!(j/k)

您应该使用自己的名称空间对象“全局”存储数据。在该上下文中,“全局”在应用程序代码中仅表示全局,而不使用
全局对象
浏览器中的窗口

这当然是一个非常基本的策略。在您的特定情况下,还可以使用jQuery的
.data()
方法将数据附加到DOM节点

$('myButton').click(function() {
   $.data(this, 'myData', this.title);
});

参考:,

在您的示例中,我建议您执行以下操作,以避免“eval”的安全风险:

myData = JSON.decode($(this).attr("title"));
一般来说,它是保存不安全数据的有效方法。您还有许多其他选择:

  • 使用JQuery的.data()方法:

    myData=$this.data(“foo”)

  • 在HTML5中,您现在可以使用自定义数据属性(例如“”)作为任何元素的属性

  • 如果知道本地存储可用,则可以使用它

  • 您可以在Jquery之上使用Backbone.js,以更抽象的方式将数据作为模型处理


lol。。。。等等myData不是在它所在的匿名函数的eval本地之上声明的吗?@MaximGershkovich:是的,但是为什么要使用
eval()
?您可以只为局部变量赋值。很抱歉,也许我应该更清楚$(this).attr('title')={someID:,someProperty:,anotherProperty:}。“我错过了什么吗?”马克西格什科维奇:我很困惑。那么
标题的值是对象还是JSON字符串?如果要解析JSON,应在eval上使用
JSON.parse()
。。但是我不确定我是否真的理解这个问题。。。。它是一个JSON字符串。。。。你是说我可以直接将JSON对象放入属性中?现在返回到我的IDE进行测试。。。。
eval("myData=" + $(this).attr("title"));
var my_application = {};

$('myButton').click(function() {
  my_application.myData = $(this).attr('title');
});
$('myButton').click(function() {
   $.data(this, 'myData', this.title);
});
myData = JSON.decode($(this).attr("title"));