ajax调用后,jquery mobile在复选框上没有样式

Posted

技术标签:

【中文标题】ajax调用后,jquery mobile在复选框上没有样式【英文标题】:jquery mobile no styling on checkboxes after ajax call 【发布时间】:2014-05-10 04:23:44 【问题描述】:

我正在尝试使用 ajax 调用从 json 数组中获取项目列表并将它们放入复选框列表中。这些项目可以正常加载,但它们没有 jquery 移动样式。

            $(document).ready(function()
            jQuery.support.cors = true;
            $.ajax(
               type: 'GET',
               url: "https://evalue.internationaldelivers.com/service_kb_cust/OCCAPI/Mobile/json/f9496ab3c3764fd0ae201de76c71608f/OCC_GetFiltersObj",
               dataType: "json",
               contentType: 'application/json',
               crossDomain: true,
               async: true,
               cache: false,
               timeout: 30000,
               success: function (data, status, xhr) 
                    for (var i=0, len=data.OCC_FiltersObj_Cust.length; i < len; i++) 
                        $("#filterpanel fieldset").append("<input type='checkbox' name='checkbox-2' id="+data.OCC_FiltersObj_Cust[i].CustomerID+" class='custom'/>")
                        $("#filterpanel fieldset").append("<label for="+data.OCC_FiltersObj_Cust[i].CustomerID+">"+data.OCC_FiltersObj_Cust[i].CustomerName+"</label>")
                    
                ,
                complete: function (xhr, status) 
                    // Indicate complete
                ,
                error: function (xhr, status, error) 
                    // Assert an error

                
            );
        );

谁能帮帮我?

【问题讨论】:

您使用的是哪个 jQM 版本? 【参考方案1】:
      for (var i=0, len=data.OCC_FiltersObj_Cust.length; i < len; i++) 
          $("#filterpanel fieldset").append("<input type='checkbox' name='checkbox-2' id="+data.OCC_FiltersObj_Cust[i].CustomerID+" class='custom'/>")
          $("#filterpanel fieldset").append("<label for="+data.OCC_FiltersObj_Cust[i].CustomerID+">"+data.OCC_FiltersObj_Cust[i].CustomerName+"</label>")
      

      $("#filterpanel fieldset").trigger("create");

【讨论】:

【参考方案2】:

您需要在复选框父元素上调用 trigger("create")

所以试试这个:

  success: function (data, status, xhr) 
                 for (var i=0, len=data.OCC_FiltersObj_Cust.length; i < len; i++) 
                    $("#filterpanel fieldset").append("<input type='checkbox' name='checkbox-2' id="+data.OCC_FiltersObj_Cust[i].CustomerID+" class='custom'/>")
                    $("#filterpanel fieldset").append("<label for="+data.OCC_FiltersObj_Cust[i].CustomerID+">"+data.OCC_FiltersObj_Cust[i].CustomerName+"</label>")
                  

                  $("[type='checkbox']").closest("div").trigger("create");    
   

【讨论】:

以上是关于ajax调用后,jquery mobile在复选框上没有样式的主要内容,如果未能解决你的问题,请参考以下文章

[jQuery Mobile]在AJAX调用后刷新DOM

在 jQuery Mobile 中的 Ajax 调用中显示页面加载微调器

完整功能中的ajax调用后刷新jquery mobile listview不起作用

ajax后刷新jQuery mobile listview

如何在 Ajax 请求后重新生成 jQuery Mobile 样式?

jQuery-Mobile:ajax请求在changePage失败后停止工作