Estou um pouco confuso sobre como obter um índice de uma opção selecionada de um <select>
item HTML .
Por esta página, há dois métodos descritos. No entanto, ambos estão sempre retornando -1
. Aqui está o meu código jQuery:
$(document).ready(function(){
$("#dropDownMenuKategorie").change(function(){
alert($("#dropDownMenuKategorie option:selected").index());
alert($("select[name='dropDownMenuKategorie'] option:selected").index());
});
});
e em html
(...)
<select id="dropDownMenuKategorie">
<option value="gastronomie">Gastronomie</option>
<option value="finanzen">Finanzen</option>
<option value="lebensmittel">Lebensmittel</option>
<option value="gewerbe">Gewerbe</option>
<option value="shopping">Shopping</option>
<option value="bildung">Bildung</option>
</select>
(...)
Por que esse comportamento? Existe alguma chance de que o select
item não esteja "pronto" no momento de atribuir seu change()
método? Além disso, mudar .index()
para .val()
está retornando o valor certo, e é isso que me confunde ainda mais.
[name=]
usado quando o select contémid
. As respostas[0].selectedIndex
eoption:selected
abaixo estão ok.Respostas:
Os primeiros métodos parecem funcionar nos navegadores que testei, mas as tags de opção realmente não correspondem aos elementos reais em todos os navegadores; portanto, o resultado pode variar.
Basta usar a
selectedIndex
propriedade do elemento DOM:Atualizar:
Desde a versão 1.6, o jQuery possui o
prop
método que pode ser usado para ler propriedades:fonte
[0]
?selectedIndex
propriedade. A adição[0]
converte o objeto jquery em um objeto javascript que possui aselectedIndex
propriedade Este exemplo não funcionará sem[0]
selectedIndex
é uma propriedade e não há atributo correspondente. Oattr
método pode funcionar para ler a propriedade em versões anteriores à 1.6, mas não dessa versão.selectedIndex
não começa de 0 com a primeira opção?selectedIndex
propriedade é baseada em zero. Verifiquei a documentação e até tentei ter 100% de certeza sobre isso.Boa maneira de resolver isso da maneira Jquery
fonte
[0]
resposta preferida do OP e, como desenvolvedor python, eu realmente aprecio a legibilidade dessa resposta.Eu tenho uma solução ligeiramente diferente com base na resposta do usuário167517. Na minha função, estou usando uma variável para o ID da caixa de seleção que estou segmentando.
O índice é retornado com:
fonte
Você pode usar a
.prop(propertyName)
função para obter uma propriedade do primeiro elemento no objeto jQuery.Isso mantém seu código dentro do domínio jQuery e também evita a outra opção de usar um seletor para encontrar a opção selecionada. Você pode restaurá-lo usando a sobrecarga:
fonte
tente isso
fonte
selectedIndex é uma propriedade de seleção JavaScript. Para jQuery, você pode usar este código:
fonte
Você pode obter o índice da caixa de seleção usando o método: .prop () do JQuery
Verifique isto:
fonte