Как проверить, выбрана ли опция?

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

По-видимому, isChecked не работает. Итак, мой вопрос - как правильно это сделать? Спасибо.

Ответ 1

UPDATE

Более прямым методом 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? или опция [selected = true] не работает

Ответ 2

Вы можете получить выбранную опцию следующим образом:

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

LIVE DEMO

Но если вы хотите перебрать все параметры, сделайте это с this.selected вместо this.isChecked, который не существует:

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

LIVE DEMO

Update:

У вас есть много ответов, предлагающих вам использовать это:

$(this).is(':selected') Хорошо, это можно сделать намного быстрее и проще с помощью this.selected, так почему вы должны использовать его, а не собственный метод элементов DOM?!

Прочтите Знать свои свойства и функции DOM в теге jQuery

Ответ 3

Если вы не знакомы или не уверены в is(), вы можете просто проверить значение prop("selected").

Как показано здесь:

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

Edit

Как отметил @gdoron в комментариях, более быстрый и наиболее подходящий способ доступа к выбранному свойству опции - через селектор DOM. Вот скрипка update, отображающая это действие.

if (this.selected == true) {

похоже, работает так же хорошо! Спасибо gdoron.

Ответ 4

использование

 $("#mySelectBox option:selected");

чтобы проверить, есть ли его конкретная опция myoption:

 if($("#mySelectBox option:selected").text() == myoption){
          //...
 }

Ответ 5

В моем случае я не знаю, почему выбрано всегда верно. Таким образом, единственный способ, который я смог придумать, - это:

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

    if ( optionHTMLStr.indexOf( 'selected' ) > 0 ) {
        optionSelected = true;
        return false;
    }
});

Ответ 6

Если вы хотите только проверить, выбрана ли опция, вам не нужно перебирать все параметры. Просто сделайте

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

Примечание. Если у вас есть опция со значением = 0, которую вы хотите выбрать, вам необходимо изменить if-условие на $('#mySelectBox').val() != null

Ответ 7

Рассматривайте это как ваш избранный список:

<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!');
    }

}