我有选择框(多属性),被称为“c0r1”,它包含的选项:的jQuery在选择框中选择多个数值
<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);
没有被选中。我已经介绍了一个调试器,blah和value被正确赋值,而jQuery不会抛出任何错误......只是,没有任何东西被分配。
我也试过
$("#c0r1[value='" + value + "']").attr("selected", "selected");
//and
$("#c0r1[value='" + value + "']").prop("selected", true);
这当中,我发现在网络上其他地方的建议。
显然,一旦我有这个工作,我会建立代码,以便选择所有的值。为什么它不工作,atm?
在页面的其他地方,我已经能够使用相同的json对象和选择框的.val()方法,它的工作正常。然而,这是第一例“多重”的案例。
谢谢, 山姆。
UPDATE:
嗯,只是有一个想法:为DOM元素c0r1及其选项是动态生成的,是有可能,jQuery是不知道它们的存在?虽然我认为会抛出一个异常(这段代码没有这样做)。
更新2:
我已经工作了,这个问题已经无关什么在这个问题正在讨论中,它只是因为代码为“选择”的选项正在运行之前选项已收到。这些选项来自服务器响应,我不会在服务器响应之前调用上述代码。
看起来像我倒下了旧的“延迟为0”谬误我的教授告诫我。
随时downvote。
您是否尝试过选择的整个数组传递到'VAL('只是第一个项目,而不是)?例如。 'var values = foo.teal [0] [blah]; $(“#c0r1”)。val(values);' – cspotcode 2013-03-07 04:04:16
我有,仍无济于事。 – 2013-03-07 05:25:06
嗯,只是在黑暗中拍摄: 我记得很久以前有一个IE6的问题,并设置复选框的值。我无法在RAM中创建复选框元素,设置选中状态,然后将其添加到文档中。在复选框添加到文档之前设置选中的状态总是会失败。 您是否试图在浏览器有机会将其呈现到文档之前修改选择列表?你也瞄准什么浏览器? – cspotcode 2013-03-07 05:29:10