代码之家  ›  专栏  ›  技术社区  ›  Dan

jquery append<select>不在IE7中工作,但在firefox中工作

  •  2
  • Dan  · 技术社区  · 17 年前

    我通过Ajax从数据库中获取数据,并将标记附加到select语句中。以下代码在firefox中有效,但仅部分在ie中有效。ie中的问题是在下拉列表中创建选项元素,但“文本”属性值为空(下拉列表中显示30个空行!但是,“value”属性值设置正确(它是我的数据库中的主键)。在IE中是否需要设置与“文本”不同的字段?下面代码中的粗体文本是我认为问题所在。顺便说一句,值不是空的,我尝试在它的位置放入一个字符串文字,它在IE中仍然是空的。

    代码是:

    $.each(data, function(key,value){
        $("<option>").attr("value", key).attr("text",value).appendTo("#select1");
    });
    
    4 回复  |  直到 17 年前
        1
  •  7
  •   cgp    17 年前

    我将尝试使用.text()代替:

      $.each(data, 
           function(key,value){ 
               $("option").attr("value", key)
                    .text(value)
                    .appendTo("#select1"); 
            });
    

    我想这就是你想要的?

        2
  •  1
  •       17 年前

    让我们用双引号再试一次:

    解决方案应该是:

    $.each(data, 
           function(key,value){ 
               $("<option>").attr("value", key)
                    .text(value)
                    .appendTo("#select1"); 
            });
    

    “选项”需要用<gt;

        3
  •  0
  •   Paul Shaver    16 年前

    交替认知是正确的…但是,如果要循环使用整数,请确保使用

    key/value.toString()-虽然jQuery不会抛出任何错误并进行处理,但它将避免额外的开销。

    一切都是为了表现,对吧?:)

    $.each(data,  
           function(key,value){  
               $("option").attr("value", key.toString()) 
                    .text(value.toString()) 
                    .appendTo("#select1");  
            }); 
    
        4
  •  0
  •   Terrance    15 年前

    我认为公布的解决方案不正确。我认为应该是:

    
    $.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"); 
            });
    

    不知何故,它掉了下来。

    推荐文章