2012-02-27 56 views
2

我有一个Phonegap/jQuery应用程序工作得很好,但是在一个区域中DOM正在被更改并且不显示,直到某些用户输入(触摸,拖动,任何东西)触发显示重新渲染。 (这种情况我的Android手机和平板电脑上,但在Chrome浏览器的)Phonegap dom更新没有立即反映在显示屏

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

你能提供更多的脚本代码吗?理想情况下,它应该像现在这样工作,但可能会发生其他一些脚本正在做的伎俩。另外x〜Subscribe元素已经可用,或者它在链中的某处被创建? – dhaval 2012-03-06 12:55:36

+0

@dhaval我添加了一些解释.. – Fosco 2012-03-06 18:06:09

+0

我已经根据你的上面的脚本创建了一个小提琴,你可以检查是否放在一起是否正确。 [http://jsfiddle.net/dhavaln/AnTVC/](http://jsfiddle.net/dhavaln/AnTVC/) – dhaval 2012-03-06 18:49:45

回答

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> 
1

我认为你必须触发页面上的JQM刷新动作那你的工作与 像:

$('#somepage').trigger('refresh'); 

,因为从你有你的改变的标记 检查page scripting部分小码创建与刷新:一个重要的区别

+0

有趣...但是,这个应用程序没有使用jQuery Mobile,只是普通的jQuery。我一直无法找到类似的功能... – Fosco 2012-03-01 19:04:55

+0

对不起,我虽然我阅读jqm :(可能它卡在我听到,当我看到另一个问题,在你的情况下任何方式不知道是什么问题是对不起..你有没有尝试过使用jqm,它可能会解决你的刷新问题.. – zaherg 2012-03-02 17:51:39

+0

经历了这个,我尝试了JQM,jqTouch,Sencha Touch,等等......一切似乎都太慢了 – Fosco 2012-03-02 17:58:21

1

我以前见过2个应用程序。这似乎发生在您稍作更改时(如更新标签文本)。我认为Android“认为”没有任何改变,并且不刷新web视图。

尝试改变一些“更大”,随着你的小改变像切换透明度div可见性(或任何用户不会注意到的)。