Respostas:
Na minha opinião, o melhor e mais curto caminho para eventos onchange no menu suspenso para obter a opção selecionada:
$('option:selected',this);
para obter o atributo value:
$('option:selected',this).attr('value');
para obter a parte mostrada entre as tags:
$('option:selected',this).text();
Em sua amostra:
$("#select-id").change(function(){
var cur_value = $('option:selected',this).text();
});
.context
, ele está obsoleto desde jQuery 1.10 - api.jquery.com/category/deprecated/deprecated-1.10
var cur_value = $('option:selected',this).text();
Isso deve funcionar:
$(this).find('option:selected').text();
Você pode usar find
para procurar a opção selecionada que é descendente do (s) nó (s) apontado (s) pelo objeto jQuery atual:
var cur_value = $(this).find('option:selected').text();
Uma vez que este é provavelmente um filho imediato, eu sugeriria usar em seu .children
lugar:
var cur_value = $(this).children('option:selected').text();
var cur_value = $(this).find('option:selected').text();
Como option
é provável que seja filho imediato de select
você, você também pode usar:
var cur_value = $(this).children('option:selected').text();
option-selected
sem aspas ...?
find('option:selected')
retorna uma string vazia para mim. Qual versão do jQuery é necessária? Estou trabalhando em 1.6.1. children('option:selected')
funciona.
option:selected
está lá desde v1.0 api.jquery.com/selected-selector
Melhor chute:
var cur_value = $('#select-id').children('option:selected').text();
Eu gosto mais de crianças neste caso porque você sabe que só vai um galho abaixo da árvore DOM ...
É apenas
$(this).val();
Acho que jQuery é inteligente o suficiente para saber o que você precisa
$("option:selected", this)
conforme mencionado acima, mas foi problemático. Eu estava usando um clique de botão para anexar o texto do elemento de opção selecionado a outro div, mas quando cliquei no botão, ele realmente mudou o elemento selecionado ... estranho. Use este.