Как сделать, чтобы скрипт работал при нажатии на ::before?
Есть хак для css,.steps li { pointer-events: none; }
.steps li:before { pointer-events: all; }
Тогда сам элемент для ивента захватываться не будет, а его псевдоэлементы будут.upd: пример для убедительностиupd2: Что происходит в данном случае? Ваш ивент распространяется и на элемент, и на его псевдоэлементы. С помощью pointer-events мы отключаем срабатывание ивентов на элементе, а на псевдоэлементах оставляем. Таким образом достигаем нужного результата.
С псевдоэлементом это не пройдет. Вместо before внутри li разместите span и на него уже событие.