Это я на всякий случай вам заметил: по де факто стандарту (ибо официального никакого естественно нет) для виджета типа accordion скрытие всех элементов списка кроме активного входит в default functionality.
Рома: если бы вы ставили transition только на нужные элементы, у вас бы ничего не скакало. Я просто удалил правило раздающее всем элементам transition и все дёрганья исчезли
Игорь Воронов: ну парень же наверное хотел шаблон для своей задачи - ajax + history API. Типа добавил на страницу скрипт, указал target и все, все работает из коробки. Handlebars это просто template engine
Кстати, вы внутри цикла объявляете position с помощью var. В JS область видимости создает не блок ({ }), а функция. Таким образом вы объявляете переменную position в той же области видимости, что и blocks. Ну, на всякий случай.
Метод offset существует у объектов jQuery. Выбирая из blocks (который объект jQuery) нужный элемент с помощью индекса, вы получаете просто элемент DOM, в котором такого метода нет.