.val()没有返回正确的值

时间:2013-01-09 17:43:58

标签: jquery

我有以下代码在选择框的更改时运行:

 $('#reg-phone-type').change( function() {
      console.dir($(this));
      console.log("$(this).val():" + $(this).val());
    if( $(this).val == 'work' ) {
      // do one thing
    } else {
      // do something else
    }
  });

当我打印出console.dir($(this));时,我可以看到所选的选项已设置(在我的屏幕截图示例中)到" work" (标签是正确的,但实际的选项价值较低,所以我知道我没有处理案件问题。)

enter image description here

更改选择框后,来自Firebug的HTML(默认为" home"):

enter image description here

<select name="regPhoneType" id="reg-phone-type" style="display: none;" value="work">
    <option value="home">Home</option>
    <option value="work" selected="selected">Work</option>
    <option value="cell">Cell</option>
</select>

因此,您可以看到正确选择了该选项。那么,为什么在我的jquery中,只有一行之后,我打电话给console.log("$(this).val():" + $(this).val());,我得到&#34; home&#34;而不是&#34;工作&#34;?我的理解是.val()返回选择框所选选项的值,所以我应该得到&#34; work&#34;。

enter image description here

1 个答案:

答案 0 :(得分:3)

尝试:

$('#reg-phone-type option:selected').val(); 

$('option:selected',this).val();