更改所选选项选择菜单.attr

时间:2012-10-12 22:57:02

标签: javascript jquery

我正在尝试预先填充包含选择菜单的表单,使用JSON,我使用密钥作为选择菜单的#id标签 但我似乎无法让它工作我尝试了不同的选择器,但仍然没有运气,

这是我的代码

 $(document).ready(function () {

     var p = {
         "weight":"39",
         "height":"1.24",
         "age":"34"
     };

     for (var key in p) {
         if (p.hasOwnProperty(key)) {

             if ($("#" + key + " option [value=" + p[key] + "]").length) {
                 $("#" + key + " option [value=" + p[key] + "]").attr('selected', 'selected');
             }

         }
     }
 });

 <select id="age">
 <option value="33">33</option>
 <option value="34">34</option>
 </select>

 <select id="height">
 <option value="1.25">1.25</option>
 <option value="1.24">1.24</option>
 </select>

 <select id="weight">
 <option value="38">38</option>
 <option value="39">39</option>
 </select>

3 个答案:

答案 0 :(得分:2)

删除“option”和“[value = ...” - 空格表示“此元素的子元素”之间的空格。

$('option [value="123"]')匹配(例如)<option><label value="123">...

$('option[value="123"]')匹配<option value="123">

答案 1 :(得分:1)

删除选择器选项属性选择器之间的空格,你还应该用引号包装这些值,否则你会得到像{{1}这样的字符串的语法错误}。

1.24

http://jsfiddle.net/3DLbA/

答案 2 :(得分:0)

<强> CHECK FIDDLE

我在代码中看到两个错误。一个是删除

之间的空格
option[value
      ^
    No space here

接下来是为您的值添加引号..

 if ($("#" + key + " option[value='" + p[key] + "']").length) {
      $("#" + key + " option[value='" + p[key] + "']").attr('selected', 'selected');

在单引号中包含您的值

您的值不是option[value=1.24]

       It should be `option[value='1.24']`
                                  ^    ^
                                 Missing Quotes here

http://jsfiddle.net/sushanth009/ZrTZA/8/