Ошибка инициализации switchery при загруженном флажке ajax

Я получаю сообщение об ошибке при инициализации флажков, загруженных с помощью Switchery. Обратите внимание, что флажки были загружены с помощью запроса AJAX.

Uncaught TypeError: Cannot read property 'disabled' of undefined at Switchery.isDisabled (switchery.min.js:1) at new Switchery (switchery.min.js:1) at HTMLInputElement. (:3:25) at Function.each (jquery.min.js:2) at n.fn.init.each (jquery.min.js:2) at :1:27

AJAX

$.ajax({
                url: '/admin/item/editReviewAndFinalSettings/{{ $item->id }}',
                type: "POST",
                data: {
                    'type':'{{ucfirst($_GET['type'])}}',
                    'item_group_id':'{{ $item->id }}',
                    'priceType[]':priceType,
                    'optionName[]':optionName,
                    'serviceName[]':serviceName,
                    'itemCodes[]':itemCodes,
                    'partnerCodesStock[]':partnerCodesStock,
                    'itemStockId[]':itemStockId,

                },
                success: function(response) {
                    $(".finalReviewStockContainer").html(response);
                    $(".new-switchery-stock").each(function(k,v) {
                        var elems = document.querySelector('.new-switchery-stock'+k);
                        var switchery = new Switchery(elems[0]);
                    });
                },
                fail: function() {
                    console.log("Error occurred while fetching review and final settings.");
                }
            });

Инициализируется ли switchery после успешного ответа ajax?

Rajender Verma 26.10.2018 08:59

Флажки переключения не инициализированы и не отображаются, вместо этого в консоли браузера отображается сообщение об ошибке.

Ahmed Numaan 26.10.2018 09:04

Вы пытались сделать console.log(elems), а также проверяли, загружается ли '.new-switchery-stock'+k?

Rajender Verma 26.10.2018 09:10

Да, я пытался утешить их счет. console.log($('.new-switchery-stock'+k).length);

Ahmed Numaan 26.10.2018 12:43

Неважно. Назначение каждому флажку ввода уникального атрибута идентификатора HTML решило мою проблему.

Ahmed Numaan 26.10.2018 12:45
0
5
996
3

Ответы 3

Может быть, вам стоит использовать $ (document) .ready (function () {/ * ваш материал здесь * /});

Для решения после успешного ответа ajax укажите это так

 $(document).find(".new-switchery-stock").each(function(k,v) {
      var elems = $(document).find('.new-switchery-stock'+k);
      var switchery = new Switchery(elems[0]);
 });

А затем проверьте, работает ли он.

Назначение каждому флажку ввода уникального атрибута идентификатора HTML перед их инициализацией с помощью функции Switchery решило мою проблему.

Другие вопросы по теме