【发布时间】:2013-10-30 19:27:21
【问题描述】:
我有一个带有 listview 统计信息的 jQuery Mobile 网站。用户可以点击传递弹出窗口的“动作”按钮。根据他们在弹出窗口中的回答,列表视图中的数字/统计数据可能会发生变化。数据库查询成功,但页面没有自动更新;我必须手动刷新它才能看到变化。我正在使用 .post() 来查询数据库(代码在最后)。
我已经看到这个问题在这里被问了多次,通常使用相同的解决方案。在成功回调或弹出“afterclose”中,使用:
$('#somelist').listview('refresh');
或者
$("#page").tigger("create");
不幸的是,这些解决方案似乎都不适合我。这对我来说已经成为一个非常令人沮丧的问题,所以我希望有人能提供帮助!
这是我的代码的缩写版本:
<div id="testdiv">
<ul data-role="listview" data-inset="true" data-theme="a" data-count-theme="a">
<li data-role="list-divider">Combat Round: <?php echo $round; ?><span class="combat_result"></span></li>
<?php
for ($i = 0; $i < $numrows; $i++) {
?>
<li class="combatant" id="combatant_<?php echo $i; ?>"><h3 class="ui-li-heading"><span class="player_name"><?php echo $member[$i]['player_name']; ?></span></h3><span class='ui-li-count'><?php echo $member[$i]['player_total_init']; ?></span>
<p class="ul-li-desc"><strong>Actions Remaining: </strong><span class="remaining"><?php echo $member[$i]['player_actions_remain']; ?></span></p>
</li>
<?php
}
?>
</ul>
</div> <!-- testdiv -->
我通过 JS 查询数据库:
$(document).on('click', '#commit_save', function(e) {
e.preventDefault();
var combatid=$("#save_data_holder").data("combat_id");
var combat_desc=$("#combat_desc").val();
$.post("commit_save.php", {
combatid: combatid,
combat_desc: combat_desc
}, function(data) {
$(".save_result").html(data);
$('#combat_list').listview("refresh");
$("#home").trigger("create");
});
});
还有我的弹窗JS:
$("#enter_num_actions").popup({
beforeposition: function( event, ui ) {
$("#data_holder").data({"combatant_name": combatant_name, "combat_id": combat_id});
},
afterclose: function( event, ui ) {
$("#testdiv").listview().trigger("create");
}
});
再次,一切正常,除了我必须执行手动刷新以获取要更新的列表视图中的值。如果有人有建议,我很感激。
提前致谢!
【问题讨论】:
-
删除
.trigger()你在这里不需要它。成功追加项目后应调用.listview('refresh'),否则会报错。 -
奥马尔:感谢您的回复。我试过多次调用 .listview("refresh") ,但它似乎没有做任何事情。
-
根据您的代码,
ul- listview - 没有 id? -
没错。我最初有一个 ul 的 id,但 W3C 验证器不喜欢它。我所做的是将无序列表包装在一个名为“testdiv”的 div 中。
-
另外,为了澄清,我没有将数据附加到列表视图。相反,我正在更改/更新列表视图中的现有内容。
标签: javascript jquery listview jquery-mobile