0

我试图让选择字段的值和文本像这样出现,但作为文本。

'1' => 'Alabama'
'2' => 'Alaska'
'3' => 'American Samoa'
..etc

但我得到的结果看起来不正确,这里是 jsfiddle:http: //jsfiddle.net/3UfRq/

JS:

$(document).ready(function() {
   $("#state").each(function() {
   $("p#out").text("'" + $(this).val() + "' => '" + $(this).text() + "'<br/>");
    });
});

HTML:

<select id="state">
  <option value="1">Alabama</option>
  <option value="2">Alaska</option>
  ...
  <option value="65">Wyoming</option>
</select>

输出:

'43' => '阿拉巴马阿拉斯加美属萨摩亚亚利桑那阿肯色...怀俄明'

4

4 回答 4

0

你的选择器"#state option"只匹配一个元素,所以each只调用你的函数一次,this在这个函数里面是<select>. 但是你应该遍历<option>s. 所以你的代码应该是这样的:

$(document).ready(function() {
   $("#state option").each(function() {
     $("p#out").append("'" + $(this).val() + "' => '" + $(this).text() + "'<br/>");
  });
});

http://jsfiddle.net/YNGdN/

于 2012-11-29T18:48:25.957 回答
0

代替

$("#state")

$("#state option")

代码

$(document).ready(function() {
   $("#state option").each(function() {
   $("p#out").append("'" + $(this).val() + "' => '" + $(this).text() + "'<br/>");
    });
});​

检查小提琴

于 2012-11-29T18:49:28.163 回答
0

你应该遍历option孩子,像这样:http: //jsfiddle.net/xavier_seignard/3UfRq/2/

于 2012-11-29T18:49:54.260 回答
0
$('#state option').map(function(i, opption) {
    $('#out').append(i + ' => ' + option.text + '<br/>');
});

演示

于 2012-11-29T18:53:36.590 回答