при изменении после добавления нового select2 - PullRequest
0 голосов
/ 01 августа 2020

Я использую select2 и хочу обработать событие изменения

он работает хорошо в первый раз, но когда я добавляю новый select2 после каждого изменения и после добавления нового select2 при изменении не работает

$('select').on("select2:select", function(e) {
    e.preventDefault();
    var item_id = $("option:selected").data('id');
    var product_id = $("option:selected").data('product');
    $.ajax({
        type: "post",
        url: window.location.origin + '/product/get-items',
        data: {
            item_id: item_id,
            product_id: product_id,
            "_token": $('#csrf-token')[0].content //pass the CSRF_TOKEN()
        },
        success: function(data) {
            $(".all-items").hide();
            data.specifications.forEach(myFunction);

            function myFunction(specification, index) {
                var a = '<div class="all-items"><div class="mb-1"><div class="row py-1"><label style="font-size: 16px; margin: 10px; margin-bottom: 10px" class="py-1 mt-2">' + specification.name + ' :</label></div><div class="row"><select class="js-example-basic-single select-' + index + ' test' + index + ' item selectpicker selectItem" name="specification[]"> </div></div></div>';
                $(".all").append(a);

                specification.items.forEach(test);

                function test(value, inx) {
                    if (data.itemIds.includes(value.id.toString())) {
                        var a = '<option style="font-size: 10px" data-id="e" data-product="dd" value="dd">' + value.name + '<span></span></option></select>';
                        $(".test" + index).append(a).select2();

                    }
                }
            }
        }
    });
});

Мне нужно сначала добавить раздел для добавления, добавить select2 и после этого добавить параметры каждого выбора

Я хочу использовать событие изменения для всех select2 (добавление и начальное)

1 Ответ

0 голосов
/ 01 августа 2020

селектор запроса $('select') собирает только текущие элементы select в документе и не содержит более поздних элементов, добавленных к документу. Поэтому вам нужно использовать более общий селектор, чтобы охватить поздние элементы. Это должно работать:

$(document).on("select2:select","select",function(e) { })
...