@DimaGhost

Как сделать что бы при клике на блок менялось содержимое другого блока?

Здравствуйте! Как сделать что бы при клике на блок менялось содержимое другого блока?
В каждом блоке указана своя стоимость:
70f230efb1a64cae810510e1a59edf58.png
Надо сделать так , что бы при нажатии на кнопку цена указанная в блоке показывалась в другом блоке:
4266f858a0074b5ba165a8830aa920e6.png
Помогите кто знает, буду очень признателен!
  • Вопрос задан
  • 1020 просмотров
Решения вопроса 1
@StelSik
Можно добавить атрибут data-price со значением цены для кнопки или блока (тому, на что будет нажатие происходить) и значение этого атрибута вставлять в нужный блок
На jquery можно сделать примерно так (не проверял, написал находу):
$('.классБлокаПоКоторомуКликают').on('click', function(){
    $('.классБлокаКудаВставлятьЦену').text($(this).attr('data-price'));
})
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@larionov_n
Если использовать ООП и нормальный подход, то:

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.
Ответ написан
Комментировать
@DimaGhost Автор вопроса
Если допустим я нажму на блок с ценой 6350 рублей , то и в том блоке тоже появиться эта стоимость
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы