4

サーバーから取得したJSON文字列に基づいてJQMobileテーブルに行を追加しています。

更新後に初めてページにアクセスしたときは、スタイルは追加されていませんが、それ以降はすべて正常に機能します。

リストビューの場合と同じように、テーブルを更新/初期化する方法はありますか?

以下のコードは、行を追加する場所です。

$.each(result, function() {
    var imgString;

    if(result[i]["status"] == 'Y') {
        imgString = '<img src= images/checkMark.png height=\"40\" width=\"40\" align=\"middle\">';
    } else {
        imgString = '';
    }

    $('#pickupTable > tbody:last').append('<tr><td class=\"tableRow10\">' +  imgString + 
      '<td class=\"tableRow80\"><a><button class=\"selectPickup\" pickupCode = \"'+ 
      result[i]["id"] + '\"> '+ result[i]["address"] +'</button></a></td></tr>');
    i++;
});

$('#pickupTable > tfoot:last').append('<tr><td colspan="5">Total Pick Ups: ' 
  +result.length + '</td></tr>');
4

2 に答える 2

7

あなたはただ使うことができる はずです:$("#myTable").table("refresh");

ただし、jquerymobileのバージョン1.3.0には実装されていません。

https://github.com/jquery/jquery-mobile/issues/5570を参照してください

ページが初期化される前に行を追加するか、行が追加されるまでテーブルの属性data-role="table"を設定しないようにする必要があるようです。 $("#myTable").table();

私が取り組んでいる実装では、ユーザーが行を追加できるようにします。幸いなことに、このサイトはより大きなモバイルデバイスで表示できるように設計されているため、1.3.1を待つことができます。

于 2013-03-13T17:45:55.783 に答える
6

.trigger('create');を使用することをお勧めします。ページを更新します、jQM Docs:

新しいマークアップ
の強化ページプラグインは、ほとんどのウィジェットが自身を自動初期化するために使用するpagecreateイベントをディスパッチします。ウィジェットプラグインスクリプトが参照されている限り、ページ上で見つかったウィジェットのインスタンスを自動的に拡張します。

ただし、クライアント側で新しいマークアップを生成するか、Ajaxを介してコンテンツを読み込んでページに挿入する場合は、createイベントをトリガーして、新しいマークアップに含まれるすべてのプラグインの自動初期化を処理できます。これは任意の要素(ページdiv自体も含む)でトリガーできるため、各プラグイン(リストビューボタン、選択など)を手動で初期化する手間が省けます。

たとえば、HTMLマークアップのブロック(ログインフォームなど)がAjaxを介して読み込まれた場合、createイベントをトリガーして、そこに含まれるすべてのウィジェット(この場合は入力とボタン)を拡張バージョンに自動的に変換します。このシナリオのコードは次のようになります。

$( ...new markup that contains widgets... ).appendTo( ".ui-page" ).trigger( "create" );
于 2012-02-17T23:24:33.917 に答える