2012-02-27 11 views
2

Phonegap/jQueryアプリケーションがうまく機能していますが、ある領域でDOMが変更されていて、ユーザーの入力(タッチ、ドラッグ、何か)再レンダリングする。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の更新...任意のアイデアを行うチェーン、中に最終関数である(これは私のAndroid携帯電話とタブレット上で起こるが、Chromeで動作します)表示?

私はデモンストレーションのためにAPKとより大きなスクリプトチャンクを提供したいと思います。

私はこれ以来、他の場所で発生するようになってきました。基本的には、多くのディスプレイを変更することなくDOMを更新しています。

編集:

元のHTMLページが含まれています:

<div id="wrapper"> 
    <ul id="menuList" class="menu-list"></ul> 
    <div id="otherContent"></div> 
</div> 

特定のボタンが押されると、オプションのリストが#menuListにロードされます。それらがロードされると、各<li>内にスパン#<item-id>サブスクリプションが作成されます。リストがロードされた後、条件付きで送信した元の関数は、範囲#<item-id>を更新します。

オプションのリストがロードされたときに表示が変更されますが、その後にスパンが更新されるときには表示されません。画面に触れると更新が表示されます。

+0

あなたはより多くのスクリプトコードを提供できますか?理想的にはそのまま動作するはずですが、他のスクリプトがそのトリックをやっていることが起こるかもしれません。また、x〜Subscribe要素はすでに利用可能ですか、それともチェーンのどこかで作成されていますか? – dhaval

+0

@dhaval私はいくつかの説明を追加しました.. – Fosco

+0

上記のスクリプトに基づいてフィドルを作成しました。 [http://jsfiddle.net/dhavaln/AnTVC/](http://jsfiddle.net/dhavaln/AnTVC/) – dhaval

答えて

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リフレッシュ動作は以下のように で作業をthatsのトリガするために持っていることを考える:あなたのマークアップ チェックpage scriptingセクションを作成変えてきた小さなコードから以来

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

リフレッシュ:重要な違​​い

+0

ですが、このアプリケーションはjQuery Mobileを使用していませんでした。私は似たような機能を見つけることができませんでした... – Fosco

+0

申し訳ありません私はjqmを読んでいるが、私は別の質問を読んだとき、あなたはjqmを使用しようとしましたが、それはあなたのリフレッシュの問題を解決するかもしれません。 – zaherg

+0

これを経験した後、私はJQM、jqTouch、Sencha Touchなどを試しました...すべてが遅すぎるようです... – Fosco

1

これまで2つのアプリケーションで見てきました。これは、ラベルテキストを更新するだけの小さな変更を加えたときに発生するようです。私はAndroidは何も変わっておらず、webviewをリフレッシュしないと「思っている」と思う。

透明部分の視認性(またはユーザーが気付かないもの)を切り替えるように、小さなものを変更して「もっと大きく」変更してみてください。

関連する問題