我有以下代码在选择框的更改时运行:
$('#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()
返回选择框的选定选项的值,所以我应该得到“工作”。