我通过AJAX从数据库获取数据并将标记附加到select语句。以下代码适用于Firefox,但仅部分在IE中。 IE中的问题是在下拉列表中创建选项元素,但“text”属性值为空(下拉列表显示有30个空白行!但是,“value”属性值设置正确(这是主键)我的数据库中是否有一个不同的字段需要在IE中设置而不是“文本”?下面的代码中的粗体文字是我认为问题所在.BTW,值不是空的,我试过放入一个字符串文字,它在IE中仍然是空白的。
代码是:
$.each(data, function(key,value){
$("<option>").attr("value", key).attr("text",value).appendTo("#select1");
});
答案 0 :(得分:7)
我会尝试使用.text()代替:
$.each(data,
function(key,value){
$("option").attr("value", key)
.text(value)
.appendTo("#select1");
});
我认为这就是你想要的目标?
答案 1 :(得分:1)
让我们再用块引号再试一次:
解决方案应该是:
$.each(data,
function(key,value){
$("<option>").attr("value", key)
.text(value)
.appendTo("#select1");
});
“选项”需要用&lt;&gt;
包围答案 2 :(得分:0)
我不认为发布的解决方案是正确的。我相信它应该是:
$.each(data, function(key,value){
$("").attr("value", key)
.text(value)
.appendTo("#select1");
});
不
$.each(data, function(key,value){
$("option").attr("value", key)
.text(value)
.appendTo("#select1");
});
&lt;&gt;以某种方式被删除了。
答案 3 :(得分:0)
altCognito是正确的...但是,如果你循环整数,请确保使用
key / value.toString() - 虽然jQuery不会抛出任何错误并会处理它,但它会避免额外的开销。
一切都与性能有关,对吗? :)
$.each(data,
function(key,value){
$("option").attr("value", key.toString())
.text(value.toString())
.appendTo("#select1");
});