2011-07-20 24 views
1

您好我有一個ID爲'quote-area'的選擇框,我想動態地爲其創建選項。似乎無法找到要追加的元素

這是一個使用jQuery手機和HTML5的移動應用程序。

我有一個本地保存的區域表,我把它們拉出來放在一個for 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> 

我的警報被運行,我可以看到標記已構建正確。但是我的選擇框沒有任何反應。我有tripple檢查選擇ID。

我想知道是否因爲js文件是先加載然後每個後續的html頁面都被添加到DOM(jQuery移動功能)。所以當javascipt下載時,選擇框不存在了嗎?

任何人都可以幫助我嗎?我需要使用某種現場活動嗎?

UPDATE:

我也使用實時查詢插件試過,因爲我幾乎可以肯定,因爲加載腳本時的列表不是DOM的一部分。但仍然沒有運氣。

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

是否有jQuery Mobile的一個DOM準備的事件?如果是這樣,你使用它?這將解決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

你試過

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

這應該使代碼運行在頁面加載

+0

是的,我在文檔中調用了我的函數。然而,scipt被加載,然後通過ajax拉入後續頁面,所以我不確定每個新頁面上都有文檔可用 – iamjonesy

0

後,如果您是通過一個Ajax請求把目標選擇框的頁面上,你應該在ajax onsuccess事件中執行你的代碼。文檔就緒事件在加載「靜態」頁面時觸發,而不是在處理完所有的Ajax請求後觸發。

0

隨着JQM需要將其出價的頁面事件按:

重要提示:使用的$(document).bind( 'pageinit'),而不是$(文件)。就緒()

你在jQuery中學到的第一件事就是調用$(document).ready()函數中的代碼,以便在DOM加載後立即執行。但是,在jQuery Mobile中,Ajax用於在瀏覽時將每個頁面的內容加載到DOM中,而DOM就緒處理程序僅對第一頁執行。要在加載並創建新頁面時執行代碼,可以綁定到pageinit事件。該事件在本頁面的底部詳細說明。

鏈接在這裏:HTTP://jquerymobile.com/demos/1.2.0/docs/api/events.html