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
Solução
Recentemente, há algumas coisas erradas com seu código:
- Você está usando o evento no objeto errado -
.ready()
deve ser aplicado ao documento - IDs não podem começar com um número
- Você deve estar usando o atributo de valor em vez do atributo ID.
- Você é melhor usar
.val()
Para obter o valor - 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.