如何检查是否选择了一个选项?

0x5*_*94E 142 jquery select option

$('#mySelectBox option').each(function() {
    if ($(this).isChecked())
       alert('this option is selected');
     else
       alert('this is not');
});
Run Code Online (Sandbox Code Playgroud)

显然,这isChecked不起作用.所以我的问题是这样做的正确方法是什么?谢谢.

iam*_*eed 245

UPDATE

选择的选项更直接的jQuery方法是:

var selected_option = $('#mySelectBox option:selected');
Run Code Online (Sandbox Code Playgroud)

回答问题.is(':selected')是你在寻找什么:

$('#mySelectBox option').each(function() {
    if($(this).is(':selected')) ...
Run Code Online (Sandbox Code Playgroud)

非jQuery(可以说是最佳实践)的方法是:

$('#mySelectBox option').each(function() {
    if(this.selected) ...
Run Code Online (Sandbox Code Playgroud)

虽然,如果您只是在寻找所选值,请尝试:

$('#mySelectBox').val()
Run Code Online (Sandbox Code Playgroud)

如果您要查找所选值的文本,请执行以下操作:

$('#mySelectBox option').filter(':selected').text();
Run Code Online (Sandbox Code Playgroud)

查看:http://api.jquery.com/selected-selector/

下次寻找重复的SO问题:

获取当前选择的选项设置选定的选项如何在jQuery中获取$(this)选项?选项[selected = true]不起作用

  • 看起来你没有看到我的答案.可以使用`this.selected`代替`$(this).is(":selected")`我想这不需要jsperf,对吧?我没有反对使用jQuery!,但是当你需要它时使用它,而不是只提供开销和更多代码. (3认同)
  • @gdoron**我完全同意你的观点.**也许我们这些jQuery需要修一体的JavaScript课程.:) (2认同)
  • @gmoron不,我的问题被投了票,投了票.虽然很好的侦探工作. (2认同)

gdo*_*ica 26

您可以通过以下方式获取所选选项:

$('#mySelectBox option:selected')...
Run Code Online (Sandbox Code Playgroud)

现场演示

但是,如果您想迭代所有选项,请使用this.selected而不是this.isChecked不存在选项:

$('#mySelectBox option').each(function() {
    if (this.selected)
       alert('this option is selected');
     else
       alert('this is not');
});
Run Code Online (Sandbox Code Playgroud)

现场演示

更新:

你有很多答案建议你使用它:

$(this).is(':selected')好吧,它可以更快更轻松地完成,this.selected那么为什么要使用它而不是本机DOM元素方法?!

阅读标签信息中的了解您的DOM属性和功能jQuery

  • 这里有趣的讨论.:)不确定为什么所有的DV,但我UV所有使用`this.selected`的人.我同意你对jQuery过度使用/滥用的评论.知道jQuery的一部分是知道何时*不*使用它.也就是说,请记住`':selected'.选择器是一个自定义的Sizzle选择器,因此使用它会禁用在支持的浏览器中使用`querySelectorAll`.它肯定不是世界末日,因为它提供了一些不错的短代码,但我个人倾向于避免仅限Sizzle的东西. (2认同)

小智 8

您可以通过 jquery 使用这种方式:

$(document).ready(function(){
 $('#panel_master_user_job').change(function () {
 var job =  $('#panel_master_user_job').val();
 alert(job);
})
})
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="job" id="panel_master_user_job" class="form-control">
                                    <option value="master">Master</option>
                                    <option value="user">User</option>
                                    <option value="admin">Admin</option>
                                    <option value="custom">Custom</option>
                                </select>
Run Code Online (Sandbox Code Playgroud)


vee*_*ain 5

如果您不熟悉或不习惯is(),您可以检查 的值prop("selected")

如这里所见

$('#mySelectBox option').each(function() {
    if ($(this).prop("selected") == true) {
       // do something
    } else {
       // do something
    }
});?
Run Code Online (Sandbox Code Playgroud)

编辑

正如@gdoron 在评论中指出的那样,访问选项的 selected 属性的更快、最合适的方法是通过 DOM 选择器。这是显示此操作的小提琴更新

if (this.selected == true) {
Run Code Online (Sandbox Code Playgroud)

似乎也能正常工作!谢谢格多伦。

  • 我建议阅读 `jQuery` [标签信息](http://stackoverflow.com/tags/jquery/info) 的 **Know Your DOM Properties and Functions** 部分。没有理由使用较慢的代码 + 更多的代码来做简单的事情。`.is()` 应该用于复杂的选择器,如 `$(...).is('.foo &gt; [name="aaa"] input') 或非原生 DOM 元素的属性,如 `$ (...).is(":visiable")。 (2认同)