В компоненте с ajax требуется после обновления области вызвать функцию javascript, которая раскрасит таблицу и вызовет плагины jQuery.
В функции BX.ajax.submitComponentForm(форма, элемент, показывать_колесико_загрузки ); необходимо добавить четвертый параметр "callback_function" - имя функции обратного вызова.
В форму к настройкам Аякса стандартного компонента добавить поле "Имя javascript-функции для вызова после обновления области".
Эти маленькие улучшения в будущем позволят в любом компоненте, где включен Аякс вызывать свою функцию для обновления области. В том числе для компонента корзины на Аякс.
Вот код, который делает таблицу красивой. Назначает обработчики событий на наведение мышкой.
Что внутри плагина jquery, я не знаю, и не должен знать. Такой код я получил от фронт-енд программиста и не трогаю. Переписать в стиле <div on mouseover="func();"> возможности нет.
jquery(docu ment).ready(f unction() {
$( ".storeitems" ).fixedtableheader({
highlightrow: true,
highlightclass: 'hover'
});
});
В компоненте формы заказа на ajax нет возможности вызвать свой обработчик после обновления области.
Но лучше было бы как описано в идее, да.
Я не рискну у клиента на проекте применять недокументированную BX.ajax.submit. Как-то не хочется, чтобы клиент боялся обновляться.
BX.ajax.submitComponentForm я использовать не боюсь. Потому что битрикс ее использует в шаблоне компонента, который кастомизирован на тысячах сайтов.
О необходимости документации
Решается вызовом BX.addCustomEvent с параметром события onAjaxSuccess, а второй параметр - имя нужной функции.
в ведре нашел:
BX.addCustomEvent(eventObject, eventName, eventHandler) - set custom event handler for particular object
BX.addCustomEvent(eventName, eventHandler) - set custom event handler for all objects
Мой наглядный пример:
У меня дизайнерские инпуты, создаются функцией Custom.init.
При оформлении заказа и выборе способа доставки, естественно работает BX.ajax.submitComponentForm в шаблоне компонента.
Инпуты создаются при загрузке: window.on load = Custom.init;
Но, при смене способа доставки, происходит обновление формы, и дизайнерские инпуты соответственно пропадают, так как обновляется DOM, и Custom.init к новым созданным - не применяется.
Т.е. нужно выполнить Custom.init по окончании BX.ajax.submitComponentForm.
Так вот нашел BX.addCustomEvent(eventName, eventHandler), и написал в script.js для шаблона:
будет возвращаться для других ajax функций битрикса, например модуль pull.
так что пришлось перекрывать BX.ajax.submitComponentForm
своей с флагом