Для описанной ситуации идеально подходят классы. Если элементы, на которые надо повесить один обработчик, находятся внутри одного контейнера (например, элементы списка), то событие следует делегировать — вешать обработчик на контейнер, указывая уточняющий селектор класса.