「c0r1」と呼ばれる選択ボックス(複数の属性)があり、オプションが含まれています:
<select id="c0r1" multiple="multiple" class="fcv">
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
オブジェクト「foo」もあります
"foo" : {
"bar": ["x", "y", "z"],
"teal" : [
{"x" : ["A"], "y" : [...], "z" : [...]},
{"x" : [...], "y" : [...], "z" : [...]},
{"x" : [...], "y" : [...], "z" : [...]}
]
}
bar には一連の値が格納され、これらはティール配列内のオブジェクトのキーとして使用されます。
c0r1 (および c0r2、c1r1、...) の内容は、"x"、"y"、および "z" によって決まります。コードの他の場所では、値のグループを表します。ページは選択ボックスにグループを割り当て、オプションはグループから入力されます (HTML の最初の部分はこの方法で生成されました)。
この質問のために、c0r1 には (コードの他の場所で) 「x」が割り当てられ、値「A」、「B」、および「C」が含まれていました。
なぜこのようになっているのかを深く掘り下げずに、foo.teal.x の値を取得し、それらを使用して c0r1 のそれぞれの値を「選択」する必要があります。
次のjsを使用すると:
var blah = foo.bar[0]; //blah = x
var value = foo.teal[0][blah][0]; //value = A
$("#c0r1").val(value);
何も選択されていません。私はデバッガーを使ってステップスルーしました.何とかと値が正しく割り当てられており、jQueryはエラーをスローしません...ただ、何も割り当てられません.
私も試してみました
$("#c0r1[value='" + value + "']").attr("selected", "selected");
//and
$("#c0r1[value='" + value + "']").prop("selected", true);
これは、ネット上の他の場所で見つけた提案でした。
明らかに、これが機能するようになったら、すべての値が選択されるようにコードを作成します。なぜ機能しないのですか、atm?
ページの他の場所では、同じ json オブジェクトと選択ボックスで .val() メソッドを使用できましたが、問題なく動作しました。ただし、これは「複数」である最初のケースです。
ありがとう、サム。
アップデート:
DOM 要素 c0r1 とそのオプションは動的に生成されるため、jQuery がそれらの存在を認識していない可能性はありますか? 例外がスローされると思いますが(このコードは行っていません)。
更新 2:
この問題は、この質問で議論されていたこととは何の関係もありませんでした。オプションを「選択」するコードが、オプションが受信される前に実行されたためです。オプションはサーバーの応答から来ています。サーバーの応答の前に上記のコードが呼び出されるとは思いもしませんでした。
私の教授が私に警告した古い「レイテンシーは0」という誤りに陥ったようです。
お気軽に反対票を投じてください。