JavaScript使用自定义属性作为持久化机制

JavaScript use custom attributes as persistance mechanism

本文关键字:持久化 机制 自定义属性 JavaScript      更新时间:2023-09-26

我需要保持我的Html控件的状态(我有一个多选择列表,我需要保持关于所选项目的信息),为此我使用自定义属性,如:

// put
$("#element").attr("selectionState", "value");
// get
alert($("#element").attr("selectionState"));

当它工作时,我想知道这是否是一个安全的方法,如果不是,你会如何解决这个问题?

我能看到的唯一风险是-另一个脚本创建具有相同名称的自定义属性,这是我可以管理的。

我建议用.data()代替。

$('#element').data('selectionState', 'value');

这绝对更安全,因为它将数据完全保存在JavaScript中,而不是将"属性"映射保存在DOM元素中。由于".data()"都是JavaScript,因此您可以在其中存储任何内容,包括函数和闭包。(我猜你也可以用"。attr()"来做,但这在IE中是相当危险的,至少在旧版本中,对于DOM和JScript内部有完全不同的存储管理。)

您提到的名称空间问题当然是一样的,管理它的可能方法也是一样的。