【发布时间】:2013-12-16 14:04:35
【问题描述】:
如果元素没有 ID 属性,我想生成某种唯一标识符来标识元素。
是否有一些函数可以获取 DOM 元素对象的对象哈希,类似于 PHP 中的 spl_object_hash ?那已经足够独特了。
【问题讨论】:
标签: javascript jquery object hash
如果元素没有 ID 属性,我想生成某种唯一标识符来标识元素。
是否有一些函数可以获取 DOM 元素对象的对象哈希,类似于 PHP 中的 spl_object_hash ?那已经足够独特了。
【问题讨论】:
标签: javascript jquery object hash
试试这个:
var uid = function (i) {
return function () {
return 'prefix-' + (++i);
};
}(0);
用法:
uid(); // "prefix-1"
uid(); // "prefix-2"
if (!el.id) el.id = uid(); // "prefix-3"
【讨论】:
JavaScript 中没有“对象哈希”。您可以设置自己的计数器来创建未使用的“id”值。
var getUnusedId = function() {
var counter = 0;
return function(prefix) {
prefix = prefix || "thelolcat";
var theId;
while (document.getElementById(theId = prefix + counter++));
return theId;
};
}();
这为您提供了一个函数,您可以调用它来获取像“thelolcat203”这样的 id。每次调用它时,计数器都会递增,它会检查新值以确保文档中没有这样的元素。
这样做并不完全安全,因为您不确定某些要动态添加的内容不会有相同的 id,但使用某些内容并不太难约定使得它不太可能发生冲突。 (无论如何,jQuery 库都会在内部执行此操作。)
【讨论】:
这会对浏览器造成可笑的负担。您所描述的可以使用已经内置在 JS 中的东西来完成。要么通过JS自动给他们ID,要么你可以通过类、孩子、父母、标签名等来选择他们。
【讨论】: