我有一个很好的Phonegap / jQuery应用程序,但是在一个区域中DOM正在被更改,直到某些用户输入(触摸,拖动,任何东西)触发显示重新渲染时才会显示。 (这在我的Android手机和平板电脑上发生,但在Chrome中有效)
function reloadSubscriptions(num) {
if (subscriptionsStore[num]) {
for (var x in subscriptionsStore[num]) {
$('#' + x + 'Subscribe').html('<a href="#" onclick="unsubscribe(\'' + x + '\',\'' + num + '\'); return false;">[UN-SUBSCRIBE]</a>');
}
}
$('#busy').hide();
}
这是链中的最终函数,它会更新DOM ...有什么想法可以触发应用程序刷新显示吗?
我愿意提供APK和更大的脚本块进行演示。
我已经把它发生在其他地方,基本上每次我更新DOM而不改变很多显示。
编辑:
原始HTML页面包含:
<div id="wrapper">
<ul id="menuList" class="menu-list"></ul>
<div id="otherContent"></div>
</div>
按下某个按钮时,会将一个选项列表加载到#menuList中。加载后,会在每个<item-id>
内创建范围#<li>
订阅。加载列表后,我发布的原始函数有条件地更新了范围#<item-id>
订阅。
加载选项列表时显示会更改,但在事后更新范围时则不会更改。触摸屏幕然后显示更新。
答案 0 :(得分:1)
我认为你必须在你正在使用的页面上触发JQM刷新操作 喜欢:
$('#somepage').trigger('refresh');
因为您从小代码中更改了标记 检查page scripting部分创建与刷新:重要区别
答案 1 :(得分:1)
之前我在2个应用程序中看到过。当您进行细微更改(例如更新标签文本)时,似乎会发生这种情况。我认为Android“认为”没有任何改变,也没有刷新webview。
尝试更改“更大”的某些内容以及您的小改动,例如切换透明度div可见性(或用户不会注意到的任何内容)。
答案 2 :(得分:0)
我尝试在我的应用程序中使用脚本代码,但没有任何问题。虽然这只是一个测试代码,但没有额外的代码可以放在一边。
<body>
<div id="wrapper">
<ul id="menuList" class="menu-list"></ul>
<div id="otherContent"></div>
</div>
</body>
<script type="text/javascript">
function reloadSubscriptions(num) {
// Tried with comments enabled as well
//for (i = 0; i < num; i += 1) {
$('#' + i + 'Subscribe').html(
'<a href="#" onclick="unsubscribe(\'' + i + '\',\'' + i
+ '\'); return false;">[UN-SUBSCRIBE]</a>');
//}
$('#busy').hide();
}
function loadList(num) {
for (i = 0; i < num; i += 1) {
$("<li>List text <span id='"+ i+"Subscribe'></span></li>")
.appendTo($("#menuList"));
reloadSubscriptions(i);
}
}
loadList(5);
// reloadSubscriptions(5);
</script>