2011-11-15 6 views
2

jquery.mobile-1.0rc3バージョンのタブレットアプリケーションを開発しています。前回、他のアプリケーションでjquery.mobile-1.0a4.1バージョンを使用しました。myListview.listview( "refresh")を実行してリストビューを更新することができました。jQueryモバイルバージョン1.0rc3でリストビューをリフレッシュ

私は新しいjquery.mobile-1.0rc3バージョンで同じことをするいくつかの問題があります。新しいjquery.mobile-1.0rc3バージョンでこれを行うことは可能ですか?

ありがとうございました。

var lists = $('#posicaoIntegradaActivosList, #posicaoIntegradaPassivosList, #posicaoIntegradaOutrosList'); 

lists.empty(); 

/* Fill the lists with jquery template */ 

lists.listview("refresh"); 

エラー:

uncaught exception: cannot call methods on listview prior to initialization; attempted to call method 'refresh'

+0

あなたのサンプルコードは、私がここでそれをテストしたように動作します:http://jsfiddle.net/qSmJq/1/とhttp://jsfiddle.net/qSmJq/3/そしてエラーなしで期待される結果を得る。どのバージョンのjQueryを実行していますか? RC3が必要1.6.4 –

+0

HTMLコードを提供できますか?そして、あなたがリストを行うならどうでしょうか?listview(); beforeリスト。リストビュー( "リフレッシュ"); – GerjanOnline

+0

Phill、あなたの例のロジックは私のコードと同じで、期待どおりに動作します。ここで何が間違っているのか分かりませんし、jQuery 1.6.4を使っています。 –

答えて

3

あなたのコードは、それがjQueryのモバイルの初期化処理の前に実行されて実行される場合によっては

は、ここでは、コードのビットがあります。 jsFiddleはデフォルトでloadイベントの発生後にコードを実行し、DOMがすべてセットアップされ、jQuery Mobileの初期化が完了しました。 @Phill PaffordのjsFiddle(http://jsfiddle.net/qSmJq/3/)を "onLoad"ではなく "no wrap(body)"で実行するように変更すると、報告しているのと同じエラーが発生します。だから私はlists.listview('refresh');行を削除するか、document.readyまたはpageshow/pagecreateイベントハンドラのいずれかの内側にコードを置くのいずれかをお勧めします:

var lists = $('#posicaoIntegradaActivosList, #posicaoIntegradaPassivosList, #posicaoIntegradaOutrosList'); 

lists.empty(); 

/* Fill the lists with jquery template */ 

//lists.listview("refresh"); 

ここでは、すぐにそれがブラウザによって解析されるように、コードを実行するためのjsfiddleです:http://jsfiddle.net/jasper/qSmJq/5/

または:ここ

$(function() { 
    var lists = $('#posicaoIntegradaActivosList, #posicaoIntegradaPassivosList, #posicaoIntegradaOutrosList'); 

    lists.empty(); 

    /* Fill the lists with jquery template */ 

    lists.listview("refresh"); 
} 

document.readyイベントハンドラにコードを包むためのjsfiddleです:http://jsfiddle.net/jasper/qSmJq/4/

または:ここ

$('#my-page-id').on('pagecreate', function() { 
    var lists = $('#posicaoIntegradaActivosList, #posicaoIntegradaPassivosList, #posicaoIntegradaOutrosList'); 

    lists.empty(); 

    /* Fill the lists with jquery template */ 

    //lists.listview("refresh"); 
} 

pageshowイベントを使用するためのjsfiddleです:http://jsfiddle.net/jasper/qSmJq/6/

そして、ここではpagecreateイベントを使用するためのjsfiddleです:サイドノートでhttp://jsfiddle.net/jasper/qSmJq/7/

:場合jQuery Mobileが特定の要素を初期化したかどうかを検出したい場合、要素のjQuery Mobile固有のクラスを確認できます:

$(function() { 

    //cache lists 
    var lists = $('#posicaoIntegradaActivosList, #posicaoIntegradaPassivosList, #posicaoIntegradaOutrosList'); 

    //iterate through the lists 
    lists.each(function (index, value) { 

     //cache this specific list 
     var $value = $(value); 

     /*add rows to this listview here*/ 

     //check if the listview has been initialized by jQuery Mobile by checking for the existence of the `ui-listview` class 
     if ($value.hasClass('ui-listview')) { 

      //since the class was found, refresh the already initialized element 
      $value.listview('refresh'); 
     } else { 

      //the class was not found, so initialize the widget 
      $value.trigger('create'); 
     } 
    }); 
}); 
+0

ジャスパー、私はあなたのロジックに従いました。問題は、私がリストビューにリフレッシュしようとしていたときに、ウィジェットが作成されていないので、コードは次のようになりました。 $(リスト).each(function(){ ($(this) .hasClass( 'ui-listview'))?$(this).listview( 'refresh'):$(this).trigger( 'create'); }); ありがとうございます! –

+0

私は助けてうれしいです。 – Jasper

関連する問題