Pergunta

Estou tentando ver se uma opção especial em um menu selecionado tem um valor igual a 1 e depois ocultar outro objeto. Eu tenho tentado o dia todo, mas não consigo descobrir (provavelmente porque sou um iniciante total no jQuery)

Eu tenho um menu seleto que preentei de um db. Se a opção com o id = "1" tiver "selecionado = selecionado", eu quero que outro div oculta quando a página é carregada.

Isso é o que eu tenho até agora:

<select>
<option id="3">test1</option>
<option id="1" selected="selected">test2</option>
<option id="2">test3</option>
</select>
<div id="hide">Hide me</div>


$("#1 option:selected").ready(function () {
   $("#hide").hide();
});

Qualquer ajuda seria muito apreciada. Obrigado .. /Andreas

Foi útil?

Solução

Recentemente, há algumas coisas erradas com seu código:

  1. Você está usando o evento no objeto errado - .ready() deve ser aplicado ao documento
  2. IDs não podem começar com um número
  3. Você deve estar usando o atributo de valor em vez do atributo ID.
  4. Você é melhor usar .val() Para obter o valor
  5. Você deve fornecer um ID de seleção, caso você adicione outra à página.

Juntando tudo:

<select id="foo">
<option value="3">test1</option>
<option value="1" selected="selected">test2</option>
<option value="2">test3</option>
</select>
<div id="hide">Hide me</div>


$(document).ready(function () {
   if ($('#foo').val() != 1)
       $("#hide").hide();
});

Se você quiser fazer isso dinamicamente quando a seleção é alterada, você pode fazer assim:

$('#foo').change(function () {
   if ($(this).val() != 1)
       $("#hide").hide();
   else
       $("#hide").show();
});

Outras dicas

Primeiro de tudo, o seu ID não é válido. Não deve começar com um número. Forneça um ID para o elemento Selecionar e encontre o elemento selecionado e verifique seu valor em 1 e mostre/oculte a div.

// assume your select has id="mySelect"
$(function() {
    $('#mySelect').change(function() {
        var value = $(this).val();
        if (value == '1') {
            $('#hide').hide();
        } else {
            $('#hide').show();
        }
        return false;
    });
});
$(function() {

$('select').change(function(){
  if ($("option:selected",this).attr('id') == 1 ){
   $("#hide").hide();
  }
});

});

Trabalhará com o que você tem, mas o mesmo vale para os pontos levantados por outros -

  • HTML Spec afirma que você não deve ter IDs começando com números
  • Use o atributo de valor para opções em vez de um ID
  • Você precisa colocar o código em uma função que será executada quando o evento de mudança do <select> é levantado
  • Dê o <select> um ID para identificá -lo exclusivamente.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top