вижу
счас вылез баг- при первой загрузке чекбоксы схлопываются,дальше нормально работает для проверки надо загрузить новую вкладку без параметров и выбрать чекбокс |
49 строка раскоментировал
|
Цитата:
Вот упрощенно ваша структура <div id="page"> <form> <select></select> </form> <div class="row"></row> </div> Когда вы выбираете что-то в select, у вас происходит скачивание HTML-кода, который затем вставляется в элемент <div id="page">. Как видите, у вас происходит замена всего содержимого (включая форму с открытым <select>) на новое содержимое. (поэтому иногда подмигивает! у меня едва подмигивает 1 раз на 5 просмотров, это не так критично, в принципе здесь можно ничего не менять!) Но всё-же вы можете не обновлять форму! Тогда надо поменять структуру HTML на такую... <div> <form> <select></select> </form> <div class="row" id="page"></row> </div>Обратите внимание, как я перенёс атрибут id! Тогда оно не мигает, поскольку не заменяется форма, но тогда нужно немного поправить ответ от сервера! (отрисовывать форму на сервере не надо, тогда!) Цитата:
Цитата:
а вы зачем-то и наверху оставили id="page" и вниз добавили id="page1" у вас получилось так <div id="page"> <form> <select></select> </form> <div class="row" id="page1"></row> </div> а надо так <div> <form> <select></select> </form> <div class="row" id="page"></row> </div> Читайте, что я пишу!!! Цитата:
UPD А в тесте до сих пор показывает (в category.js строки 48-53) new Pjax({ elements: 'a[ajaxLink], li.page a, div.sorter a, form', selectors: ['#page'], scrollTo: false, cacheBust: false }); UPD Теперь передвинулось на строки 65-70, но всё-равно тот же текст UPD Цитата:
Проще говоря, раскомментируйте 49 строчку в category.js у вас в category.js строки 28-53 выглядит так $(document).on('change', '#goods-filter :input, #goods-filter [type=hidden]', function() { /*interval = setInterval(function () { //$('div.' + cssClass + ' .multiselect').parent().find('ul').show(); //cssClass = ''; if (cssClass.length > 0) { console.log('setInterval'); $('div.' + cssClass + ' .multiselect').parent().find('ul').show(); } if (cssClass.length == 0) { clearInterval(interval); } }, 1);*/ $('#goods-filter :submit').click(); if (cssClass.length > 0) { //$('div.' + cssClass + ' .multiselect').parent().find('ul').show(); } }); а надо так $(document).on('change', '#goods-filter :input, #goods-filter [type=hidden]', function() { /*interval = setInterval(function () { //$('div.' + cssClass + ' .multiselect').parent().find('ul').show(); //cssClass = ''; if (cssClass.length > 0) { console.log('setInterval'); $('div.' + cssClass + ' .multiselect').parent().find('ul').show(); } if (cssClass.length == 0) { clearInterval(interval); } }, 1);*/ $('#goods-filter :submit').click(); if (cssClass.length > 0) { *!* $('div.' + cssClass + ' .multiselect').parent().find('ul').show(); */!* } });или лучше так (если закомментированное не нужно!) а надо так $(document).on('change', '#goods-filter :input, #goods-filter [type=hidden]', function() { $('#goods-filter :submit').click(); if (cssClass.length > 0) { $('div.' + cssClass + ' .multiselect').parent().find('ul').show(); } }); UPD Цитата:
Цитата:
$(document).on('change', ':checkbox', function() { cssClass = $(this).closest('div.col-xs-3').data('css'); }); то, что у вас на 55-57 строчках перенесите на 27 (у вас она до сих не перенесена) |
переписал для продакшена
вылезла новая ошибка открываем вкладку, загружаем урл, фильтруем- все работает затем кликаем на другую категорию, открываем чекбоксы и после первого клика идет схлопывание на тесте обновил |
вроде разобрался
надо в событии pjax complete заново инициализировать pjax |
вылезла новая напасть
сперва отмечаем чекбоксы,затем кликаем назад в браузере шлются бесконечные запросы например сюда google-analytics.com/collect хром показывает тысячи запросов |
Я не нашёл никаких тысячу запросов, только пару десятков, да и то они шлются по любому поводу (мышка из браузера вышла, url поменялся)
а так у вас всё схлопывается, поскольку вы зачем-то наверх перенесли id="page", а внизу заменили на id="goods-list". (а надо внизу чтобы было id="page") и то, что у вас на 55-57 строчках перенесите на 27 (у вас она до сих не перенесена) |
может файл закешировался
там счас новая версия скрипта |
вот что получил https://imgur.com/a/Ex0A5Y8
|
Цитата:
Цитата:
В общем у вас там немного запутанно получилось... Я думаю, что состояние кнопок лучше восстанавливать из состояния, которое хранится в search params. Короче удалите всё, что у вас сейчас есть в category.js, и замените на это... $(function() { new Pjax({ elements: "form", selectors: ["#goods-list"], scrollTo: false, cacheBust: false }); $(".price-range").each(function() { var $minPrice = $(this).find("#min"); var $maxPrice = $(this).find("#max"); var min = $(this).data("price-min") || 0; var max = $(this).data("price-max") || 1000000; $(this).ionRangeSlider({ type: "double", grid: true, min: min, max: max, from: $minPrice.val(), to: $maxPrice.val(), postfix: " ₽", onFinish: function (data) { $minPrice.val(data.from).trigger("change"); $maxPrice.val(data.to).trigger("change"); } }); }); $(document).click(function () { $(".multiselect").parent().find("ul").prop("style", ""); }); $(document).on("change", "#goods-filter :input, #goods-filter [type=hidden]", function() { $("#goods-filter :submit").click(); $(this).closest("div.col-xs-3").find(".multiselect").parent().find("ul").show(); }); document.addEventListener("pjax:complete", function () { updateFields(); $("#tabster").tabs(); $(".bxslider").bxSlider({ pagerCustom: "#bx-pager", infiniteLoop: false }); $("a[rel=gallery]").fancybox([]); $("#goods-filter").show(); }); updateFields(); $(".sidebar-menu").show(); function updateFields() { var q = $.deparam(location.search.replace(/^\?/,"")); $("form select[name='brands[]']").val(q.brands); $("form select[name='brands[]']").multiselect("refresh"); $("form input[name=latest]").val(q.latest || "0"); $("form input[name=sale]").val(q.sale || "0"); $("form input[name=popular]").val(q.popular || "0"); $("form input[name=available]").val(q.available || "0"); $("form .price-range").data("ionRangeSlider").update(q.price); } $(document).on("click", ".treeview li a", function() { var li = $(this).closest("li"); $(".treeview a.selected").removeClass("selected"); $(this).addClass("selected"); if (li.hasClass("collapsable")) return; li.find("div.hitarea:first").swapClass("expandable-hitarea", "collapsable-hitarea"); li.swapClass("lastExpandable", "lastCollapsable"); li.swapClass("expandable", "collapsable"); li.find("ul:first").toggle(); }); $(document).on("click", ".items a[ajaxLink]", function() { var link = $('.treeview a[href="' + $(this).attr('href') + '"]'); if (!link.length) return false; var li = link.closest("li"); $(".treeview a.selected").removeClass("selected"); link.addClass("selected"); if (li.hasClass("collapsable")) return; li.swapClass("lastExpandable", "lastCollapsable"); li.swapClass("expandable", "collapsable"); li.find("div.hitarea:first").swapClass("expandable-hitarea", "collapsable-hitarea"); li.find("ul:first").toggle(); }); }); |
Часовой пояс GMT +3, время: 20:27. |