如何选择动态添加下拉列表的默认选项

时间:2013-07-25 16:15:04

标签: javascript jquery html

我使用jquery从服务器获取一个字符串:

<option value='1'>1</option><option value='2'>2</option>
<option value='3'>3</option><option value='4'>4</option>

然后我在div中创建一个下拉列表:

$.get('server.php', function(data) {
    $('#mydiv').html('<select id="mysel" name="mysel">'+data+'</select>');
});

问题是当我创建它时,我想选择一个选项:

$("#mysel").val("3");

但不起作用!如果我在调用此行之前添加警报,那么这是有效的!

alert('test');
$("#mysel").val("3");

无法找到问题所在。

注意:我无法改变从服务器获取数据的方式。

7 个答案:

答案 0 :(得分:2)

您没有提供id权利。您的选择ID是mysel,您正在尝试在mydiv中选择一个选项。改变

$("#mydiv").val("3");

$("#mysel").val("3");

答案 1 :(得分:1)

您需要使用get()的回调。您可以使用已有的success

$.get('server.php', function(data) {
    $('#mydiv').html('<select id="mysel" name="mysel">'+data+'</select>');
    $("#mysel").val("3");
});

或者您可以使用done

$.get('server.php', function(data) {
    $('#mydiv').html('<select id="mysel" name="mysel">'+data+'</select>');
}).done( function() { "#mysel").val("3") });

编辑:实际上,不是在dom中添加内容然后修改它,最好在插入之前进行修改。

$.get('server.php', function(data) {
    $mysel = $('<select id="mysel" name="mysel">'+data+'</select>').val("3");
    $("#mydiv").append($mysel);
});

答案 2 :(得分:0)

您需要设置selectedIndex属性:

document.getElementById("mySel").selectedIndex = 3;

答案 3 :(得分:0)

尝试:

$("#mysel option:selected").val("3");

如果您想设置文本,请尝试:

$( "#mysel option:selected" ).text("3");

但是,必须在DOM树中创建下拉列表后声明这一点。

答案 4 :(得分:0)

$(document).ready(function(e) {
    $.get('server.php',{dataType:'text/html'}, function(data) {
         $('#mydiv').html('<select id="mysel" name="mysel">'+data+'</select>');
         $("#mysel").val("3");
    })
});
  

尝试以上代码;

答案 5 :(得分:0)

试试这个

$(document).ready(function(){
   $("select#mysel option").each(function() { 
       if($(this).text() == '2')
          this.selected = true;
   });
});

答案 6 :(得分:0)

假设行$("#mysel").val("3");位于$.get() {} ...

之外

来自$.get的响应是异步,因此{<1}}在添加HTML $("#mysel").val("3");元素之前执行

添加<option>延迟执行的时间足以使alert()存在于该场景中。

这里最简单的解决方案是将<option>移到$("#mysel").val("3");内。