2009-04-07 41 views
2

データベースからAJAXを介してデータを取得しており、selectステートメントにタグを追加しています。次のコードはFirefoxで動作しますが、IEでは部分的にしか動作しません。 IEの問題は、ドロップダウンにオプション要素を作成することですが、 "text"属性値が空です(ドロップダウンには30行の空白行が表示されますが、 "value"属性値は正しく設定されます私のデータベースから)。私は "テキスト"以外のIEで設定する必要がある別のフィールドはありますか?下のコードの太字は、私は問題があると思うところです。値は空ではない、 。その代わりに文字列リテラルと、それはIEでまだ空白になってJquery append <select>はIE7では動作しませんが、Firefoxで動作します

コードは次のとおりです。

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

答えて

7

私が代わりに)(.textセクションを使用しようとするだろう:

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

これはあなたが進めていることだと思いますか?

+0

はい、あなたのソリューションはIEとFirefoxの両方で正確に機能しました。私が間違っていると思う.attr( "text"、value)を使うインターネット上の例がたくさんあります。解決していただきありがとうございます! – Dan

+1

は自動的にあなたがその中に設定された任意のHTMLをエスケープ)(また、その.textのを覚えています、つまりは.text( "FOO ")は、" < /全角> <EM> foo" というように設定されます。そこにHTMLを含める場合は、.html()を使用します。 – cdmckay

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

<>さんは、何とか落ちてしまいました。

1

ブロック引用符で再びそれを試してみましょう:

ソリューションは次のようになります。

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

"オプション"、しかし...>

<
0

altCognitoが正しいに囲まれる必要があります整数をループする場合は、

key/value.toString()を使用してください.jQueryはエラーをスローしないで処理しますが、付加的なオーバーヘッドが発生する。

これはすべてパフォーマンスに関するものです。 :)

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

IE7(標準モード)では、インデックスが数字の$( '

関連する問題