Если использовать ООП и нормальный подход, то:
1) Создать модели для каждой сущности
2) Создать шаблоны или View - которые будут реагировать на изменения в моделях и рендерить представления, вызывая нужную бизнес логику через метод модели для калькуляции другой цены или запроса ее с сервера.
3) Использовать Publish/Subscribe, отправлять сообщения другим объектам (блокам) по клику или действию пользователя.
OneBlock.publish('eventName', data);
AnotherBlock.subscribe('eventName', function(data) {
calculatePrice()
showSomethingInAnotherBlock()
});
Использовать можно: Ember, React, Backbone, Radio, Marionette, ну и конечно VanillaJS :)
В общем проще когда на странице есть отдельные js объекты представляющие блоки и содержание, еще лучше если в проекте внедрена шина Radio. На клики подписываем triggers, fireEvent. Если все делает Backend, то вызывать через JSONP подобные callbacks.