Como verificar se uma opção está seleccionada?

$('#mySelectBox option').each(function() {
    if ($(this).isChecked())
       alert('this option is selected');
     else
       alert('this is not');
});
Aparentemente, o isChecked não funciona. Portanto, a minha pergunta é: qual é a forma correcta de o fazer? Obrigado.

Author: gdoron, 2012-04-18

9 answers

Actualizar

Um método mais directo para a opção seleccionada seria:

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

Responder à Pergunta .is(':selected')é o que você está procurando:

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

A melhor forma de o fazer seria:

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

Embora, se estiver apenas à procura do valor seleccionado, tente:

$('#mySelectBox').val()

Se está à procura do texto do valor seleccionado, faça:

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

Confira: http://api.jquery.com/selected-selector/

Da próxima vez procura por perguntas duplicadas:

Obter a opção seleccionada actual ou escolha a opção seleccionada ou Como obter $(esta) opção selecionada no jQuery? ou a opção [seleccionado=verdadeiro] não funciona

 205
Author: iambriansreed, 2017-05-23 12:17:59

Pode obter a opção seleccionada desta forma:

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

DEMONSTRAÇÃO AO VIVO

Mas se quiseres iterar todas as opções, fá-lo com {[[2]} em vez de this.isChecked que não existe:

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

DEMONSTRAÇÃO AO VIVO

Actualizar:

Tens muitas respostas a sugerir que uses isto.

$(this).is(':selected') bem, ele pode ser feito muito mais rápido e mais fácil com {[[2]} então por que você deve usá-lo e não o método do elemento DOM nativo?!

Leia Conheça as suas propriedades e funções no DOM na jQuery informação da marca

 23
Author: gdoron, 2017-05-23 10:31:19

Se não estiver familiarizado ou confortável com is(), pode apenas verificar o valor de prop("selected").

Como se vê aqui:

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

Editar:

Como @gdoron apontou nos comentários, a maneira mais rápida e apropriada de aceder à propriedade seleccionada de uma opção é através do selector DOM. Aqui está a actualização do fiddle que mostra esta acção.

if (this.selected == true) {

Parece funcionar também! Obrigado, gdoron.

 2
Author: veeTrain, 2012-04-18 17:04:11

Utilizar

 $("#mySelectBox option:selected");

Para testar se é uma opção particularmyoption:

 if($("#mySelectBox option:selected").text() == myoption){
          //...
 }
 1
Author: Mouna Cheikhna, 2012-04-18 16:30:32

Considere isto como a sua lista de selecção:

<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>

Depois, assinale a opção seleccionada desta forma:

function doSomething(param) {

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

}
 1
Author: Masoud Darvishian, 2017-11-30 06:42:08
No meu caso, não sei porque é que a selecção é sempre verdade. A única maneira de pensar é:
var optionSelected = false;
$( '#select_element option' ).each( function( i, el ) {
    var optionHTMLStr = el.outerHTML;

    if ( optionHTMLStr.indexOf( 'selected' ) > 0 ) {
        optionSelected = true;
        return false;
    }
});
 0
Author: Sergey Onishchenko, 2014-06-04 11:58:10

Se só quiser verificar se uma opção está seleccionada, então não precisa de iterar todas as opções. Apenas faça

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

Nota: Se tem uma opção com valor = 0 que deseja seleccionar, tem de alterar a condição if Para $('#mySelectBox').val() != null

 0
Author: Adam, 2017-03-23 10:01:17

Pode usar este caminho por 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>
 0
Author: amir, 2018-08-18 06:41:57

Se precisar de verificar a opção estado seleccionado para valor específico:

$('#selectorId option[value=YOUR_VALUE]:selected')
 0
Author: dimpiax, 2018-10-05 00:10:08