Поскольку идентификаторы должны быть гарантированы, чтобы быть незаполненными, но не обязательно быть случайными, гораздо лучше просто использовать монотонно увеличивающийся номер идентификатора с префиксом альфа, например так:
function assignID(elem, prefix) {
prefix = prefix || "autoId_";
if (elem.id) {
return (elem.id);
} else {
if (!assignID.cntr) {
assignID.cntr = 1;
}
var id = prefix + assignID.cntr++;
elem.id = id;
return(id);
}
}
При этом используется свойство функции assignID.cntr
для отслеживания счетчика, который увеличивается на единицу каждый раз, когда он используется, поэтому назначенные здесь идентификаторы никогда не будут такими же, как ранее назначенный идентификатор.
Затем вы можете убедиться, что у любого элемента всегда есть идентификатор, просто сделав это:
assignID(elem, "plot");
Если вам нужен метод jQuery, который бы делал это, то вы можете сделать это так:
jQuery.assignIDCntr = 1;
jQuery.fn.assignID = function(prefix) {
prefix = prefix || "autoId_";
return this.each(function() {
if (!this.id) {
this.id = prefix + jQuery.assignIDCntr++;
}
});
}
И тогда вы бы использовали это так:
$(".myobjects").assignID("plot");