Перетаскивайте с использованием Javascript очень медленно - PullRequest
0 голосов
/ 06 мая 2020

У меня есть перетаскиваемая страница в PHP, которая работает с JS, на этой странице нужно организовать +700 ли, а страница очень медленная. При нажатии кнопки для изменения порядка и при перетаскивании li после 2 se c li перемещается.

Эта страница загружается в 2se c (это нормально), я использую ленивую загрузку в img, и HTML файл имеет менее 100 строк с 1 CSS и это JS.

Мой Javascript код:

//Get category and subcategory and create <select> filter.
$("#filter_categoria").on("change", function() {
    var value = $(this).val();
    $.ajax({
        url: "produtos/get_sub",
        type: "post",
        data: {
            "value": value
        },
        success: function(data) {
            $("#filter_subcategoria").html(data);
        },
    });
});

// Reorder button, and drag and drop
$(document).ready(function() {
    $('.reorder_link').on('click', function() {
        $("ul.reorder-photos-list").sortable({
            tolerance: 'pointer'
        });
        $('.reorder_link').html('Salvar');
        $('.reorder_link').attr("id", "saveReorder");
        $('#reorderHelper').slideDown('slow');
        $('.image_link').attr("href", "javascript:void(0);");
        $('.image_link').css("cursor", "move");

        $("#saveReorder").click(function(e) {
            if (!$("#saveReorder i").length) {
                $(this).html('').prepend('<img src="../imagens/refresh-animated.gif"/>');
                $("ul.reorder-photos-list").sortable('destroy');
                $("#reorderHelper").html("Reorganizando produtos, aguarde um instante.").removeClass('light_box').addClass('notice notice_error');

                var h = [];
                $("ul.reorder-photos-list li").each(function() {
                    h.push($(this).attr('id').substr(9));
                });

                $.ajax({
                    type: "POST",
                    url: "produtos/orderUpdateSub",
                    data: {
                        ids: " " + h + ""
                    },
                    success: function() {
                        window.location.reload();
                    }
                });
                return false;
            }
            e.preventDefault();
        });
    });
});

//Here hide the unfiltred li's
$('#filter_subcategoria').change(function() {
    var value = $(this).val();
    $(".reorder_ul").find("li").hide()
    $.each($(".reorder_ul").find("li"), function(n, liData) {
        var liData = $(this).attr('data-filtertext');
        var articleValues = liData.split(" ");
        var article = $(this);
        $.each(articleValues, function(nn, actualValue) {
            if (actualValue == value) {
                article.show();
            }
        });
    });
});

1 Ответ

0 голосов
/ 07 мая 2020

Я решил свою проблему, используя следующий сценарий:

    //Get category and subcategory and create <select> filter.
$("#filter_categoria").on("change", function() {
    var value = $(this).val();
    $.ajax({
        url: "produtos/get_sub",
        type: "post",
        data: {
            "value": value
        },
        success: function(data) {
            $("#filter_subcategoria").html(data);
        },
    });
});

//Testing sortable
$(function() {
    t1 = window.performance.now()
    var $sortable1 = $( "#sortable" ).sortable({
      connectWith: ".reorder_ul",
        items: ".sorting-initialize"
    });
    $sortable1.find(".ui-state-default").one("mouseenter",function(){
        $(this).addClass("sorting-initialize");
        $sortable1.sortable('refresh');
    });

    t2 = window.performance.now()
    console.log(t2-t1)
  });
//Finished

// Reorder button, and drag and drop
$(document).ready(function() {
        $("#saveReorder").click(function(e) {
            if (!$("#saveReorder i").length) {
                $(this).html('').prepend('<img src="../imagens/refresh-animated.gif"/>');

                var h = [];
                $("ul.reorder-photos-list li").each(function() {
                    h.push($(this).attr('id').substr(9));
                });

                $.ajax({
                    type: "POST",
                    url: "produtos/orderUpdateSub",
                    data: {
                        ids: " " + h + ""
                    },
                    success: function() {
                        window.location.reload();
                    }
                });
                return false;
            }
            e.preventDefault();
        });
});

//Here hide the unfiltred li's
$('#filter_subcategoria').change(function() {
    var value = $(this).val();
    $(".reorder_ul").find("li").hide()
    $.each($(".reorder_ul").find("li"), function(n, liData) {
        var liData = $(this).attr('data-filtertext');
        var articleValues = liData.split(" ");
        var article = $(this);
        $.each(articleValues, function(nn, actualValue) {
            if (actualValue == value) {
                article.show();
            }
        });
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...