Как передать DOM элемент в коллбэк miniShop2

Всем привет, данный вопрос уже много раз мусолили в сообществе, но хорошего решения так я и не нашёл, поэтому делаю ещё одну попытку, может в этот раз всё прояснится, и так:
В miniShop2 есть система коллбеков, в которую можно добавлять свои, это безумно круто и спасибо в очередной раз автору за такую гибкость, но проблема в том что в эти коллбеки не передаётся DOM элемент, спровоцировавший событие и тут приходится велосипедить на js всякие не красивые штуки.
Суть вопроса вот в чём, в карточке товара есть две кнопки — в корзину и быстрая покупка, надо что бы первая вела себя как обычно, просто добавляла товар и уведомляла нас что он добавлен, а вторая добавляла товар и если он успешно добавлен, то перекидывала сразу в корзину, и вот если бы в коллбек miniShop2 — добавление товара в корзину — можно было бы передать ту кнопку, которая спровоцировала событие добавления и проверить в своей функции допустим по классу, то можно было бы реализовать просто: и быструю покупку и открытие в модальном окне и вообще всё что душа попросит)

Но сколько бы я не выводил в консоль всё что передаётся в коллбек, элемента спровоцировавшего событие я там не нашёл.
Ну и теперь суть вопроса — как передать в коллбек — добавление, да и в другие коллбеки miniShsop2 DOM элемент, который провацирует событие?
Семён Кудрявцев
07 октября 2016, 09:37
modx.pro
4
1 262
0

Комментарии: 2

Семён Кудрявцев
07 октября 2016, 15:22
+1
Я всё таки откопал решение, в недрах постов сообщества)
Решение на удивление простое:
В свою функцию в коллбеке miniShop2 на самом деле передаёт элемент формы, с которой пришло событие, просто я не думал что искать его надо вот так)
var form = miniShop2.sendData.$form
Так что мой вопрос решился просто — второй форме, в которой лежит кнопка быстрой покупки, я дописал ещё один класс по мимо ms2_form — например fast_order и в своей функции проверил
if(form.hasClass('fast_order')){
        document.location = '/korzina';
    }
    Семён Кудрявцев
    07 октября 2016, 15:33
    0
    Итоговое решение — просто у себя в js пишем
    miniShop2.Callbacks.Cart.add.response.success = function() {
        if(miniShop2.sendData.$form.hasClass('fast_order')){
            document.location = '/korzina';
        }
    };
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2