Acabo de encontrar la misma situación, y mientras miraba algunos elementos DOM en el inspector de herramientas de desarrollo de Chrome, noté que todos ellos parecen tener una propiedad como jQuery11230892710877873282
asignada con un número único. Obviamente, el número después de 'jQuery' es diferente cada vez que carga la página, mi suposición es que jQuery está generando esto internamente cada vez que intenta acceder o manipular cualquier elemento DOM. Jugué un poco con eso, y parece que los elementos a los que nunca accede/manipula jQuery pueden no tener esta propiedad, pero en el momento en que haga algo como $(elem)
, la propiedad estará allí.Entonces, dado que estamos usando tanto jQuery como lodash, ideé la siguiente función para devolver un ID único independientemente de si el elemento realmente tiene un atributo de identificación DOM.
_.reduce($(elem), function(result, value, key) { if(_.startsWith(key, 'jQuery')) return value; }, 0)
Fwiw, IE ofrece una [propiedad] IDunico (http: //msdn.microsoft.com/en-us/library/ms534704 \ (VS.85 \) .aspx) objetos DOM que, cuando se accede, genera un identificador único para ese elemento. No es parte de la especificación y no le ayudará en otros navegadores. –
He creado un [gist] (https://gist.github.com/renaatdemuynck/57b1b78b6611e6d5d866) con un complemento que agrega la funcionalidad uniqueID de IE a otros navegadores. –