Да, это называется делегированием событий и существует дольше, чем jQuery и "live".
"live" работает, слушая события в теле или документе, а затем, когда происходит событие, смотрит на event.target, чтобы увидеть, соответствует ли его селектор одному из тех, которые хранятся в кэше. Это довольно неэффективно, но для некоторых работает нормально.
Более эффективный подход заключается в добавлении элементов, для которых вы хотите, чтобы прослушиватели были в массиве, а затем прослушивание пузырьковых событий для самого низкого общего предка элементов, для которых вы хотите делегировать события. Элемент body является запасным вариантом, но он наименее эффективен. Когда слушатель получает событие, которое он ожидает, проверьте, является ли event.target одним из элементов в массиве, и если это так, вызовите связанную функцию с элементом как this .
Вы также можете просто сохранить идентификатор элемента как свойство объекта, поэтому его поиск будет быстрее, если у вас много элементов или вы можете регистрировать события на основе класса.
Есть несколько ограничений и недостатков (некоторые события всплывают в некоторых браузерах, но не в других, а некоторые вообще не всплывают), и это может быть очень неэффективно, поэтому используйте с осторожностью.