1

基于 AJAX 查询,我将一些选项附加到列表中。

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;

所以我被卡住了,因为我不知道如何选择我的选项。你有什么想法我可以解决这个问题吗?谢谢!

PS:当我在谷歌浏览器中尝试第二种可能性时,它运行良好。

问候,约瑟夫

4

3 回答 3

0
var opts = {

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

}

$.ajax(opts)
于 2013-02-09T21:56:32.857 回答
0

使用prop代替attr

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

或者

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

http://jsfiddle.net/uG88d/

于 2013-02-09T21:58:59.347 回答
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);

试试看

于 2013-02-09T22:04:22.927 回答