在jquery mobile中刷新列表

时间:2014-04-03 12:54:15

标签: javascript jquery jquery-mobile

从视图中我将用户选择的值发送到返回部分视图的控制器。 该局部视图在div内注入同一页面,该页面最初向控制器发送请求。一切都按预期工作,有一个主要问题。收到数据后,jquery mobile无序列表项将失去它的样式。

我有像这样的HTML结构

<div class="divData" data-role="fieldcontain">
    <fieldset data-role="controlgroup" data-type="horizontal">

        <div id="filter">
            <div data-role="fieldcontain">
                @Html.DropDownListFor(model => model...})
                @Html.DropDownListFor(model => model...})
                @Html.DropDownListFor(model => model...})
            </div>
        </div>
    </fieldset>
    <div id="divMyData">
       <div id="details">
          <ul data-role="listview" data-filter="true" data-filter-placeholder="" data-inset="true">
            @{        
               foreach (var d in Model)
               {             
                  <li><a onclick="processData('@d.Id')">@d.Id</a></li> 
               }
            }
         </ul>
       </div>
    </div>
</div>

js功能

success: function (result)
{
   $("#divMyData").html(result);
   // I've tried to refresh list like but without succ.
   $("#details").listview("refresh");       
}

1 个答案:

答案 0 :(得分:1)

#details不是您的列表的ID。它是包含列表的DIV的ID。您可以为列表分配ID并在其上调用listview(&#39; refresh&#39;)或:

$("#details ul").listview("refresh");
  

<强>更新

查看您的成功代码,您将完全替换详细信息div和ul,而不仅仅是附加listitems。在这种情况下,listview(&#39; refresh&#39;)将无法运行,因为您已经离开并重新创建了列表视图。

而是尝试初始化listview:

$("#details ul").listview();

如果不起作用,请在容器上拨打enhanceWithin()http://api.jquerymobile.com/enhanceWithin/):

$("#divMyData").html(result).enhanceWithin();

注意:enhanceWithin适用于jQM 1.4.x,对于以前的版本,您需要.trigger("create")