нужно обрабатывать события onmouseover
и onmouseout
(если я не ошибаюсь в названиях) и записывать элементу какой-то аттрибут: мышка зашла на элемент - записали аттрибут, мышка ушла - убрали аттрибут. но у вас таких элементов будет много из-за того, что событие всплывает вверх и потому чтобы найти элемент, на котором сейчас мышка нужно будет найти элемент, у которого установлен аттрибут, но у него нет детей с установленным аттрибутом
да, скорость работы будет желать лучшего при большом DOM-дереве, но если у вас DOM-дерево не изменяется, то можно зазеркалить ваше DOM-дерево на какую-то структуру данных, с которой уже будете работать напрямую. если же DOM-дерево изменяется, вам нужно будет синхронизировать эту вашу структуру с DOM-деревом