1

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

 $('#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));我可以看到所选选项已设置(在我的屏幕截图示例中)为“工作”(标签是正确的大小写,但实际选项值较低,所以我知道我没有处理案例问题)。

在此处输入图像描述

这是更改选择框后来自 Firebug 的 HTML(默认为“home”):

在此处输入图像描述

<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());,我会得到“家”而不是“工作”吗?我的理解是.val()返回选择框的选定选项的值,所以我应该得到“工作”。

在此处输入图像描述

4

1 回答 1

3

尝试:

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

或者

$('option:selected',this).val(); 
于 2013-01-09T17:47:06.127 回答