我有以下代码在选择框的更改时运行:
$('#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" (标签是正确的,但实际的选项价值较低,所以我知道我没有处理案件问题。)
更改选择框后,来自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());
,我得到&#34; home&#34;而不是&#34;工作&#34;?我的理解是.val()
返回选择框所选选项的值,所以我应该得到&#34; work&#34;。
答案 0 :(得分:3)
尝试:
$('#reg-phone-type option:selected').val();
或
$('option:selected',this).val();