Показать сообщение отдельно
  #20 (permalink)  
Старый 24.01.2019, 06:10
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от гуня
может файл закешировался
Да, так всё время и происходит!
Сообщение от гуня
сперва отмечаем чекбоксы,затем кликаем назад в браузере
шлются бесконечные запросы
например сюда google-analytics.com/collect
хром показывает тысячи запросов
не надо было в событии pjax:complete заново инициализировать pjax, т. е. у вас на каждый ответ регистрируется обработчик, который вызывается при следующем ответе.

В общем у вас там немного запутанно получилось... Я думаю, что состояние кнопок лучше восстанавливать из состояния, которое хранится в 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();
    });
});

Последний раз редактировалось Malleys, 24.01.2019 в 06:22.
Ответить с цитированием