【问题标题】:Switchery initialize error on AJAX loaded checkbox加载 AJAX 复选框的 Switchery 初始化错误
【发布时间】:2018-10-26 05:45:02
【问题描述】:

初始化使用 Switchery 加载的复选框时出现错误。请注意,复选框已使用 AJAX 请求加载

未捕获的类型错误:无法读取未定义的属性“已禁用” 在 Switchery.isDisabled (switchery.min.js:1) 在新的 Switchery (switchery.min.js:1) 在 HTMLInputElement。 (:3:25) 在 Function.each (jquery.min.js:2) 在 n.fn.init.each (jquery.min.js:2) 在: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 成功响应后被初始化了吗?
  • 切换复选框未初始化或显示,而是在浏览器控制台上观察到错误消息。
  • 您是否尝试过 console.log(elems) 并检查是否正在检索 '.new-switchery-stock'+k
  • 是的,我试图安慰他们的人数。 console.log($('.new-switchery-stock'+k).length);
  • 没关系。为每个输入复选框分配一个唯一的 HTML id 属性解决了我的问题。

标签: javascript jquery switchery


【解决方案1】:

对于ajax成功响应后的解决方案,这样写

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

然后测试它是否有效。

【讨论】:

    【解决方案2】:

    也许你应该使用 $(document).ready(function() { /* 你的东西在这里 */ });

    【讨论】:

      【解决方案3】:

      在使用 Switchery 函数初始化它们之前为每个输入复选框分配一个唯一的 HTML id 属性解决了我的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-15
        • 2015-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多