165
$('#mySelectBox option').each(function() {
    if ($(this).isChecked())
       alert('this option is selected');
     else
       alert('this is not');
});

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

4

12 回答 12

292

更新

对所选选项更直接的 jQuery 方法是:

var selected_option = $('#mySelectBox option:selected');

回答这个问题.is(':selected')就是你要找的:

$('#mySelectBox option').each(function() {
    if($(this).is(':selected')) ...

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

$('#mySelectBox option').each(function() {
    if(this.selected) ...

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

$('#mySelectBox').val()

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

$('#mySelectBox option').filter(':selected').text();

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

下次寻找重复的 SO 问题:

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

于 2012-04-18T16:20:08.280 回答
26

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

$('#mySelectBox option:selected')...

现场演示

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

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

现场演示

更新:

你有很多答案建议你使用这个:

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

阅读标签信息中的Know Your DOM Properties and FunctionsjQuery

于 2012-04-18T16:23:03.887 回答
5

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

如此处所示

$('#mySelectBox option').each(function() {
    if ($(this).prop("selected") == true) {
       // do something
    } else {
       // do something
    }
});​

编辑

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

if (this.selected == true) {

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

于 2012-04-18T16:25:12.037 回答
5

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

$(document).ready(function(){
 $('#panel_master_user_job').change(function () {
 var job =  $('#panel_master_user_job').val();
 alert(job);
})
})
<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>

于 2018-08-18T06:41:57.060 回答
2

采用

 $("#mySelectBox option:selected");

测试它是否是一个特定的选项myoption

 if($("#mySelectBox option:selected").text() == myoption){
          //...
 }
于 2012-04-18T16:30:32.110 回答
2

将此视为您的选择列表:

<select onchange="var optionVal = $(this).find(':selected').val(); doSomething(optionVal)">

                                <option value="mostSeen">Most Seen</option>
                                <option value="newst">Newest</option>
                                <option value="mostSell">Most Sell</option>
                                <option value="mostCheap">Most Cheap</option>
                                <option value="mostExpensive">Most Expensive</option>

                            </select>

然后你检查选择的选项是这样的:

function doSomething(param) {

    if ($(param.selected)) {
        alert(param + ' is selected!');
    }

}
于 2017-11-30T06:42:08.500 回答
1

如果您需要检查特定值的选项选择状态:

$('#selectorId option[value=YOUR_VALUE]:selected')
于 2018-10-05T00:10:08.477 回答
0

就我而言,我不知道为什么 selected 总是正确的。所以我能想到的唯一方法是:

var optionSelected = false;
$( '#select_element option' ).each( function( i, el ) {
    var optionHTMLStr = el.outerHTML;

    if ( optionHTMLStr.indexOf( 'selected' ) > 0 ) {
        optionSelected = true;
        return false;
    }
});
于 2014-06-04T11:58:10.943 回答
0

如果您只想检查是否选择了一个选项,那么您不需要遍历所有选项。做就是了

if($('#mySelectBox').val()){
    // do something
} else {
    // do something else
}

注意:如果您希望选择 value=0 的选项,则需要将 if-condition 更改为$('#mySelectBox').val() != null

于 2017-03-23T10:01:17.317 回答
0

如果您想通过 javascript 检查选定的选项

最简单的方法是在该标记中添加 onchange 属性并在 js 文件中定义一个函数,如果您的 html 文件有类似这样的选项,请参见示例

 <select onchange="subjects(this.value)">
               <option>Select subject</option>
               <option value="Computer science">Computer science</option>
               <option value="Information Technolgy">Information Technolgy</option>
               <option value="Electronic Engineering">Electronic Engineering</option>
               <option value="Electrical Engineering">Electrical Engineering</option>
 </select>

现在在js文件中添加函数

function subjects(str){
    console.log(`selected option is ${str}`);
}

如果要检查 php 文件中的选定选项

只需在您的标签中提供 name 属性并访问它 php 文件全局变量 /array ($_GET 或 $_POST) 如果您的 html 文件是这样的,请参见示例

<form action="validation.php" method="POST">
             Subject:<br>
            <select name="subject">
               <option>Select subject</option>
               <option value="Computer science">Computer science</option>
               <option value="Information Technolgy">Information Technolgy</option>
               <option value="Electronic Engineering">Electronic Engineering</option>
               <option value="Electrical Engineering">Electrical Engineering</option>
            </select><br>

         </form>

在您的 php 文件 validation.php 中,您可以像这样访问

$subject = $_POST['subject'];
echo "selected option is $subject";
于 2020-02-02T17:36:26.947 回答
0
var selectedOption = $("option:selected", #selectIdentifier)

<select id="selectIdentifier">
<option>1</option>
<option>2</option>
<option selected="selected">3</option>
</select>

编辑:这个答案是有效的,并且避免了 jQuery 的宗教战争。这个答案的关键是:selected。要回答实际问题,OP 需要在选项之间创建一些区别,以便能够查询天气,选择了特定选项。例如,选项本身的 id、data-、value 等装饰。

于 2021-04-07T10:46:15.133 回答
0

你也可以在 CSS 中做一个双属性选择器

$('[value="your_value"][selected="selected"]')

选择“your_value”选择:

if( $('[value="your_value"][selected="selected"]') ) {
  // do something
}
于 2022-02-01T13:10:22.607 回答