mFiltr2 + Colorbox

Подскажите как решить проблему. Фильтрую ресурсы с помощью mFiltr2. При фильтрации перестает работать лайтбокс от Colorbox, которым выводится расширенное описание. Проблема в ajax. Кто знает как решить?
Антон Левиц
05 марта 2015, 13:10
modx.pro
1
1 251
0

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

Григорий Коленько
05 марта 2015, 19:32
0
По событию mse2_load (не помню точно название, надо смотреть исходники эмфильтра) перезагружать колорбокс
    Виталий Валерьевич
    06 марта 2015, 07:15
    0
    Используйте callback функции, для этого они и созданы.
      Антон Левиц
      Антон Левиц
      06 марта 2015, 08:40
      0
      вот так вот прописываю

      mSearch2.Callbacks.response.success = function(response) {
      $(".vers").colorbox({inline:true, width:«80%»});
      };

      но не работает. после Callbacks действие какое то надо?
        Василий Наумкин
        06 марта 2015, 08:53
        0
        Ты mSearch2 с miniShop2 перепутал.

        Всё намного проще:
        $(document).on('mse2_load', function(event, response) {
            console.log(event, response)
        });
          Виталий Валерьевич
          06 марта 2015, 09:06
          0
          Да, один из вариантов! Думаю более приемлемый.
            Антон Левиц
            Антон Левиц
            06 марта 2015, 10:20
            0
            Спасибо!
        Виталий Валерьевич
        06 марта 2015, 09:03
        1
        0
        Ну понятно ;)
        В общем есть 2 варианта реализованные Василием:

        1) Внести изменения в вызовы mSearch2.load(), придется править исходники объекта mSearch2

        mSearch2.load('', function(response) { 
        	$(".vers").colorbox({inline:true, width:"80%"}); 
        });

        2) Слушать событие «mse2_load», можно указывать в любом месте, исходники править не нужно.

        (function() {
        	$(function() {
        		$(document).on("mse2_load", function(response) {
         			$(".vers").colorbox({inline:true, width:"80%"}); 
        		});
        	});
        }) ();

        Метод mSearch2.afterLoad(); не подходит, т.к. вызывается раньше, чем формируется итоговый DOM

        Сам этим компонентом не пользовался, посмотрел как работает JS данного компонента тут minishop2.com (default.js), естественно код не проверял, но попробуйте, должно сработать.
          Антон Левиц
          Антон Левиц
          06 марта 2015, 10:20
          0
          Спасибо большое! Второй вариант подошел прекрасно!
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          8