0xD34F, молодец, намёк поняли.
Вот об этом я и тревожусь: монстры веба, пилящие новые стандарты, исподволь насаждают наплевательское отношение к зарезервированным словам. Это вместо того, чтобы сделать undefined глобальной константой.
Отлично.
Ждём новых фреймворков со свойствами superObject.true, superObject.false, методами superObject.if, superObject.while и деструктором superObject.prototype.delete.
Алексей, в селекторе обработчика переменная step и не должна подставляться.
Выражение $(".step-" + step +" label") — это однократное выполнение функции $ с подстановкой актуального на тот момент значения step. То есть 1.
Далее в контексте полученного объекта jQuery выполняется функция on. Которая ничего не знает о переданном в $ селекторе и менять его не может и не собирается.