MegaFilter и offset().top ошибка

chesster

Постоялец
Регистрация
8 Янв 2014
Сообщения
77
Реакции
5
Вот пытаюсь прикрутить MFplus к шаблону и встретил такую функцию в mega_filter.js

Код:
        if( self._options.showLoaderOverResults ) {
            (function(){
                var w = self._jqContent.outerWidth(),
                    h = self._jqContent.outerHeight(),
                    j = self._jqContent.find('.product-list'),
                    k = j.length ? j : self._jqContent.find('.product-grid'),
                    l = k.length ? k : self._jqContent,
                    t = k.length ? k.offset().top - 150 : l.offset().top;
                


                self._jqLoader
                    .css('width', w + 'px')
                    .css('height', h + 'px')
                    .fadeTo('normal', 1)
                    .find('img')
                    .css('margin-top', t + 'px');
            })();
        }

с нее в консоли вылазит ошибка что не существует l.offset().top и дальше скрипт не выполняется.
Что есть в стандартном шаблоне, откуда берется эта переменная?
п.с. посмотрел что у меня в шаблоне нет стандартных классов product-grid и product-list, дописал их вручную, чтоб проверить переменную. Но не прокатило, ничего не изменилось.
Шаблон welldone, если нужно
 
Ошибку в студию, что пишется в консоли?

п.с. посмотрел что у меня в шаблоне нет стандартных классов product-grid и product-list, дописал их вручную

Могу предположить что у тебя в шаблоне нет стандартного врапера с id "content", в котором находиться содержимое, и который нужен для функционирования MFPlus
 
Последнее редактирование:
к примеру, хром пишет Uncaught TypeError: Cannot read property 'top' of undefined

п.с. понял, что не в том разделе создал, попросил модератора чтоб перенес Opencart2. Что-то пока тихо.

update: а все на самом деле было очень просто. Странно что никто не подсказал.
Если будет у кого та же проблема, то нужно в настройках модуля, в закладке javascript указать содержимое селектора .products-grid
 
Последнее редактирование:
update: а все на самом деле было очень просто. Странно что никто не подсказал.
Если будет у кого та же проблема, то нужно в настройках модуля, в закладке javascript указать содержимое селектора .products-grid
Ну да ну да, так уж и никто не подсказал. А что я тебе про id "content" писал? Если ты в настройках поставишь .products-grid тогда .products-list не отработает. MF берет селектор содержащий контент который ты указал в настройках ("content", селектор по умолчанию) и при выполнении ищет в нем .products-grid и .products-list. Так что твой подход не очень правильный, особенно если у тебя отображение товаров должно меняться с .products-grid на .products-list.
 
Ну да ну да, так уж и никто не подсказал. А что я тебе про id "content" писал? Если ты в настройках поставишь .products-grid тогда .products-list не отработает. MF берет селектор содержащий контент который ты указал в настройках ("content", селектор по умолчанию) и при выполнении ищет в нем .products-grid и .products-list. Так что твой подход не очень правильный, особенно если у тебя отображение товаров должно меняться с .products-grid на .products-list.

Ну да, правильно. Так будет в дефолтном шаблоне.
Именно в моем шаблоне используется немного другой метод отображения. Тут в классах продуктов есть и products-grid и products-list, они не сменяют друг друга (подключен другой клас). Поэтому фильтр в принципе будет работать и если указать селектор products-list.
Спасибо за помощь!

Теперь другая проблема ;)
При выборе фильтра, список товаров обновляется в ajax без перезагрузки всей страницы. Все отлично, но перестают работать те java скрипты, которые изначально касались перезагруженной части страницы, остальные вроде работают.
Если загружаю скрипты в тело селектора, то они работают. Хз понятно выразился или нет ;)
Может можно как-нить передать функции на обновляемую часть страницы?
 
Последнее редактирование:
Назад
Сверху