Я только что столкнулся с той же ситуацией, и, просматривая некоторые элементы DOM в инспекторе инструментов разработчика Chrome, я заметил, что все они имеют свойство типа jQuery11230892710877873282
, которому присваивается уникальный номер. Очевидно, что число после 'jQuery' меняется каждый раз, когда вы загружаете страницу, я предполагаю, что jQuery генерирует это внутренне каждый раз, когда пытается получить доступ или манипулировать любым элементом DOM. Я немного поиграл с ним, и похоже, что элементы, к которым jQuery никогда не обращается и не манипулирует ими, могут не иметь этого свойства, но как только вы сделаете что-то вроде $(elem)
, свойство будет там. Итак, поскольку мы используем jQuery и lodash, я разработал следующую функцию, которая возвращает уникальный идентификатор независимо от того, имеет ли элемент атрибут DOM id.
_.reduce($(elem), function(result, value, key) { if(_.startsWith(key, 'jQuery')) return value; }, 0)