2012-02-27 55 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可見性(或任何用戶不會注意到的)。