Я согласен с комментатором, который сказал «несколько тестов JSPerf». Первое правило оптимизации - «преждевременно оптимизировать». Почему вы оптимизируете? У вас проблемы с производительностью? Если да, то уверены, что вы выделили его для этого кода? Вот что вам скажет профилирование. Если это этот код, то вы можете выяснить, какой метод обеспечивает большую производительность.
Я подозреваю, что первая версия будет иметь более высокую производительность, потому что она присоединяет обработчики событий к элементам, которые ближе всего подходят для генерации события. Вторая версия прикрепляет обработчики событий к элементам выше в дереве DOM, поэтому события должны будут распространяться до их захвата, а затем обработчик события должен запустить фильтр, чтобы увидеть, происходят ли события из соответствующих элементов.
Еще один способ убедиться в том, что первая версия идентифицирует элементы, которые нуждаются в прослушивателях при загрузке страницы (тогда выполняется работа), а вторая версия идентифицирует элементы, которые будут реагировать на события по мере возникновения событий (распространение выработать и потенциально создать больше работы - возможно, по уважительной причине, см. ниже).
Будьте очень осторожны, хотя: часто второй подход используется, когда элементов динамически вставляются. Это самый простой способ решить проблему обработчиков событий, которые не привязаны к динамически добавленным элементам. Поэтому, если у вас есть динамически добавленные элементы, тогда вторая версия может быть вашим лучшим вариантом, несмотря на соображения производительности.
Наиболее эффективным способом является использование [ваниль-УД] (http://vanilla-js.com/). – Oriol
Запустите некоторые тесты jsPerf. – j08691
Вы считали, что слушаете событие изменения в элементе select? – Undefined