从视图中我将用户选择的值发送到返回部分视图的控制器。 该局部视图在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");
}
答案 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")