基本上我正在检查我是否得到一些选定的ID然后使用该选择的值,否则使用来自不同属性的值,有时它发生没有选定的项目所以我得到未定义,但以下代码不解决我的问题
var user_role = $('#user_role option:selected').attr('id');
if (typeof user_role === 'undefined') {
alert(intval(jQuery('#selected_role').val()));
user_role = jQuery('#selected_role').val();
}
我也试过
var user_role = $('#user_role option:selected').attr('id');
if (typeof user_role === undefined) {
alert(intval(jQuery('#selected_role').val()));
user_role = jQuery('#selected_role').val();
}
编辑:对于那些要我检查是否(!user_role)的人我已经检查了它并且它不起作用 在上述任何一种方式中,我都没有进入我的if状态。
答案 0 :(得分:3)
您的undefined
检测工作正常。 "问题"是,如果未选择任何内容,option:selected
将返回第一个选项,因此typeof .attr('id')
永远不会"undefined"
。
var user_role = $('#user_role option:selected').attr('id');
document.body.innerHTML += user_role;

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="user_role">
<option id="opt1">Opt1</option>
<option id="opt2">Opt3</option>
<option id="opt3">Opt3</option>
</select>
&#13;
(如果您省略了所有option
或id
个选项,则可以输入if
。)
答案 1 :(得分:-1)
检查某些东西是否是jQuery对象的最佳方法(所以你没有得到任何未定义的错误)是这样的:
var user_role = $('#user_role option:selected').attr('id');
if (!user_role) {
alert(intval(jQuery('#selected_role').val()));
user_role = intval(jQuery('#selected_role').val());
}
答案 2 :(得分:-2)
undefined是一个对象(不是一个类型)试试这个:
if (user_role === undefined)
{}