2012-07-15 42 views
4

我在動態填充jQuery移動中的選擇菜單時遇到問題。jQuery手機。動態填充選擇菜單。選項最初不顯示

當我追加選項,初始值不顯示,我只是得到一個空行。這些值在那裏並且在點擊菜單時可以選擇,但它只是初始視圖。當我將菜單硬編碼到頁面時,它工作正常。我會認爲這是因爲我最初有一個空的下拉列表,因爲它應該和附加時顯示,視圖不知道更新,所以不斷顯示一個空行。無論如何,我可以強制視圖更新後,我已經附加?我試過.trigger("create")但這沒有任何作用。

這是一個屏幕,顯示我的意思。 「位置」下拉列表是我遇到的問題,「測試」是我用硬編碼來顯示我想實現的目標。

enter image description here

這裏的HTML:

<label for="location" class="select">Location</label> 
<select name="location" id="location"></select> 
<label for="test" class="select">Test DD</label> 
<select name="test" id="test"> 
    <option value="test1">Test 1</option> 
    <option value="test2">Test 2</option> 
    <option value="test3">Test 3</option> 
    <option value="test4">Test 4</option> 
    <option value="test5">Test 5</option> 
</select> 

而這裏的JS:

tx.executeSql('SELECT * FROM locations WHERE lDeleted != 1', 
    [], 
    function(tx,results){ 
    var len = results.rows.length; 
    for (var i=0; i<len; i++){ 
     $('#location').append('<option value="'+results.rows.item(i).ID+ 
     '" class="dropDownBlk">'+results.rows.item(i).lTitle+'</option>'); 
    } 
    $('#location').append('<option value="0">Add new location...</option>') 
    }, 
    errorCB 
); 

回答

19

這樣做的伎倆:

$("#location").trigger("change"); 
0

後您附加的所有選項的菜單:

$("#location option[value='test1']").attr("selected", "selected"); 

或者如果你只是想選擇的第一個值:

$("#location option:first").attr("selected", "selected"); 
+0

我喜歡這個主意。我試着做$(「#location option:first」)。attr(「selected」,「selected」);但這沒有預期的效果 – Fraser 2012-07-15 07:21:39

+0

它應該工作,你確定你是在添加到位置的選項之後做的嗎? – fmsf 2012-07-15 07:26:36

+0

我是,是的。我認爲這也會起作用。我找到了一個不同的解決方案。將在一秒後發佈 – Fraser 2012-07-15 07:28:44

7

後:

$('#location').append('<option value="0">Add new location...</option>'); 

嘗試:

$("#location").selectmenu('refresh', true); 
0

這個作品對我來說

$(document).on('change', "body", function(){ 
    $(".ui-selectmenu").selectmenu(); 
}); 

如果不工作,則手動觸發主體更改事件。

$('body').trigger('change'); 
0

我用這個和它的工作對我來說:

$.each(AllTxnDAT_PRV, function(index, item) { 

     var DocCode = item.DocCode; 
     var DocName = item.DocName;   
     htmlDOC += '<option value="' + DocCode + '">' + DocName + '</option>'; 

    });   

$('#DocType > option').remove(); 
$('#DocType').append($(htmlDOC)); 
$('#DocType').selectmenu(); 
$('#DocType').selectmenu('refresh', true); 
相關問題