我使用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");
无法找到问题所在。
注意:我无法改变从服务器获取数据的方式。
答案 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");
内。