2011-07-20 5 views
1

こんにちは私は、動的にオプションを作成したいid 'quote-area'の選択ボックスを持っています。追加する要素が見つからないようです

jQueryモバイルとHTML5を使用するモバイルアプリ向けです。

私は、ローカルに保存された領域のテーブルを持っています。私はそれらを取り出してforループに入れて、選択ボックスに追加するHTML文字列を作成します。

は、ここに私のJSです:

   function(tx, results) { 
        len = results.rows.length; 

        var markup = []; 

        for(var i=0; i< len; i++){ 

         var area_id= results.rows.item(i).area_id; 
         var label = results.rows.item(i).label; 

         markup.push("<option value='"+area_id+"'>"); 
         markup.push(label); 
         markup.push("</option>"); 
        } 
        alert(markup.join("")); 
        $('#quote-area').append(markup.join("")); 
       } 
       ); 

HTML:

<select name="area" id="quote-area"></select> 

マイアラートを実行しますと、私はマークアップが正しく構築されている見ることができます。私の選択したボックスには何も起こりません。私は選択IDをチェックした。

jsファイルが最初に読み込まれ、その後の各HTMLページがDOM(jQueryモバイル機能)にajaxedされるからです。だから、javasciptがダウンロードされても、選択ボックスはまだ存在しないのですか?

誰もがこれを手伝ってくれますか?何らかのライブイベントを使用する必要がありますか?

UPDATE:スクリプトがロードされたとき、リストはDOMの一部ではないので、私はそれを、ほぼ正だから、私は、ライブクエリプラグインを使用してみました

。しかし、まだ運がありません。

$('#quote-area').livequery(function(){ 
    $(this).append($("<option></option>").attr("value",area_id).text(label)); 
}); 
+0

は、jQueryのモバイル上のDOM readyイベントはありますか?もしそうなら、あなたはそれを使っていますか?これは、まだDOMに選択ボックスが存在しないという問題を解決します。 – Fred

+1

私はこの質問に対する答えをチェックすることをお勧めします:http://stackoverflow.com/questions/170986/what-is-the-best-way-to-add-options-to-a-select-from-an- array-with-jquery – pederOverland

答えて

1

は、あなたは、AJAXリクエストによってページ上のターゲット選択ボックスを入れている場合は、ページが

+0

はい私は自分の関数をドキュメント内から呼び出す準備ができています。しかし、sciptがロードされ、後続のページがajax経由で取り込まれるので、新しいページがあるたびにdocが用意されているかどうかわからない – iamjonesy

0

をロードされた後これは、あなたが、コードの実行をすべきである作るべき

$(document).ready(function() { whatever(); }); 

を試してみましたajax onsuccessイベントでコードを実行します。ドキュメント準備完了イベントは、すべてのAjaxリクエストが処理されたときではなく、「静的」ページがロードされたときに起動されます。

あなたはPER ASページイベントにそれを入札する必要がJQMで
0

重要

:使用$(文書).bind( 'pageinit')ではなく、$(ドキュメント).ready()

jQueryで最初に学ぶことは、$(document).ready()関数の中でコードを呼び出して、DOMがロードされるとすぐにすべてが実行されるようにすることです。しかし、jQuery Mobileでは、Ajaxは各ページの内容をナビゲートする際にDOMにロードするために使用され、DOMレディ・ハンドラは最初のページに対してのみ実行されます。新しいページがロードされて作成されるたびにコードを実行するには、pageinitイベントにバインドします。このイベントはこのページの下部に詳細に説明されています。

ここにリンクします。http://jquerymobile.com/demos/1.2.0/docs/api/events.html

関連する問題