2013-02-09 86 views
1

基於AJAX查詢我附加了一些選項列表。選擇選項,這是剛剛追加jquery

for(var i = 0; i < options.length; i++) { 
    var data = options[i]; 
    var option = $('<option id="mySelectElementOption_' + data['id'] + '" value="' + data['value'] + '">' + data['value'] + '</option>'); 
    $('#mySelectElement').append(option); 
} 

現在,當用戶我想對剛剛附加選項選擇頁面上的交互,我嘗試以下(這兩種可能性不工作對我來說):

$('#mySelectElementOption_' + id).attr('selected', 'selected'); 

var option = document.getElementById('mySelectElementOption_' + id); 
option.selected = true; 

所以我卡住了,因爲我不知道如何選擇我的選項。你有什麼想法可以解決這個問題嗎? 謝謝!

P.S .:當我在Google Chrome中嘗試第二種可能性時,它完美地工作。

問候,約瑟夫

+0

嘗試'$( '#mySelectElement')VAL($ ('#mySelectElementOption_'+ id).val());' – Musa 2013-02-09 21:57:39

回答

0
var opts = { 

success: function(data) 
     { 
      //do everything here first before appending it, 
      //including adding event bindings 
     } 

} 

$.ajax(opts) 
+0

好的事情是用戶必須先觸發事件,所以之後選擇該選項。 – miclaus 2013-02-09 21:58:27

+0

您可以在其中添加綁定,甚至可以在單擊時執行該功能,然後將其添加。 – sajawikio 2013-02-09 21:59:08

+0

我的意思是如果AJAX查詢成功,然後選項被追加到列表。 換句話說,AJAX查詢請求mySelectElement的選項並附加它們。那麼用戶可以觸發事件,例如,從另一個列表中選擇一個ID,該ID對應於我剛添加到mySelectElement的其中一個選項。 – miclaus 2013-02-09 22:28:24

0

使用prop而不是attr

$('#mySelectElementOption_' + id).prop('selected', true); 

$('#mySelect').val($('#mySelectElementOption_' + id).val()); 

http://jsfiddle.net/uG88d/

0

試試這個:
HTML:

<!DOCTYPE html> 
<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<meta charset=utf-8 /> 
<title>JS Bin</title> 
</head> 
<body> 
    <select id="mySelectElement"> 
    <option id="oldoption" >Old option</option> 
    </select> 
</body> 
</html> 

JS:

//demo data 
options = [{id:0, value:"aaa"},{id:1, value:"bbb"},{id:2, value:"ccc"}]; 

    for(var i = 0; i < options.length; i++) { 
     var data = options[i]; 
     var option = $('<option id="mySelectElementOption_' + data['id'] + '" class="interactable" value="' + data['value'] + '">' + data['value'] + '</option>'); 
     $('#mySelectElement').append(option); 
    } 
//This is what you need: 
     $("#mySelectElement :not([class])").attr("disabled","disabled"); 

說明:
$("#mySelectElement :not([class=interactable])") - 這告訴了jQuery找出在#mySelectElement任何選項元素不具備的「交互'班。
然後禁用它:.attr("disabled","disabled");

試試看: jsBin

編輯:

$("#mySelectElement .interactable:first").prop('selected', true); 

Try it out

+0

啊好吧這個「確實」的東西。但我不需要禁用我的選項,那些應該稍後使用。我寧願選擇一些類似默認值的東西。 **編輯:**和順便說一句。所有舊的選項都被完全刪除,只有新的選項被附加。 – miclaus 2013-02-09 22:20:49

+0

@miclaus,我更新了代碼,現在好嗎? – funerr 2013-02-10 14:01:05

相關問題