O que significa a sintaxe $ ("seletor", isso)? Eu tenho uma idéia geral, mas eu não estou totalmente certo
JoshWillik
14
@ JoshWillik com $("selector", this)você está encontrando todos os selectorelementos dentro thisdo contexto. Escrever $("selector", this)é quase o mesmo que $(this).find('selector')
Bellash
8
@ JoshWillik: como $()é um alias de jQuery(), você pode encontrar a documentação aqui: api.jquery.com/jQuery A assinatura afirma que existe obviamente jQuery( selector [, context ] ). @ Bellash: se é "quase o mesmo", qual é a diferença? Ou o que é mais rápido? Eu prefiro .find()uma vez que este é mais OO IMO ...
Adrian Foder
7
Como verificar em caso de seleção múltipla?
Hemant_Negi 25/05
3
@ AdrianFöder Para você e outras pessoas olhando para ele, .find()é de cerca de 10% mais rápido de acordo com esta resposta: stackoverflow.com/a/9046288/2767703
A solução acima funciona perfeitamente, mas eu escolho adicionar o código a seguir para que eles desejem obter a opção clicada. Ele permite que você obtenha a opção selecionada mesmo quando esse valor selecionado não foi alterado. (Testado apenas com Mozilla)
Vincular-se a optioneventos é uma proposta arriscada, principalmente em dispositivos móveis. Por exemplo, o Webkit não oferece suporte a esse evento corretamente: bugs.chromium.org/p/chromium/issues/detail?id=5284
Ian Kemp
OK legal! Como eu disse, a segunda solução não é suportada em muitos navegadores!
Bellash 29/02
15
Alternativa delegada
Caso alguém esteja usando a abordagem delegada para o ouvinte, use e.target(ele se referirá ao elemento select).
$('#myform').on('change','select',function(e){var val = $(e.target).val();var text = $(e.target).find("option:selected").text();//only time the find is requiredvar name = $(e.target).attr('name');}
+1 porque é isso que eu quero, mas quando tentei isso localmente, ele não está funcionando. Apenas trabalhe na jsfiddle, quais são as CDN que devo adicionar?
AVI
6
Acho isso mais curto e limpo. Além disso, você pode percorrer os itens selecionados se houver mais de um;
selectedOptionsnão está disponível em todos os navegadores.
Bernhard Döbler
@ BernhardDöbler quais? alguma fonte?
1.44mb
1
Copiei seu código para o IE 11 e recebi um erro. Eu acabei com this.options[ this.options.selectedIndex ]. A Mozilla diz que é suportado pelo Firefox a partir de 26, IE Sem suporte.
Bernhard Döbler
6
<selectid="selectId"><optionvalue="A">A</option><optionvalue="B">B</option><optionvalue="C">C</option></select>
$('#selectId').on('change', function () {
var selectVal = $("#selectId option:selected").val();
});
Primeiro crie um select option. Depois disso, jqueryvocê poderá obter o valor selecionado atual quando o usuário alterar o select optionvalor.
se este é o caso, por que não vai "var selectedVal = $ (" # selectElement ") val ()." work¿
Luise
O caso está obtendo valor quando o evento de alteração é emitido no elemento select. O valor não seria atualizado ao selecionar alterações, se você fizer isso.
Respostas:
fonte
$("selector", this)
você está encontrando todos osselector
elementos dentrothis
do contexto. Escrever$("selector", this)
é quase o mesmo que$(this).find('selector')
$()
é um alias dejQuery()
, você pode encontrar a documentação aqui: api.jquery.com/jQuery A assinatura afirma que existe obviamentejQuery( selector [, context ] )
. @ Bellash: se é "quase o mesmo", qual é a diferença? Ou o que é mais rápido? Eu prefiro.find()
uma vez que este é mais OO IMO ....find()
é de cerca de 10% mais rápido de acordo com esta resposta: stackoverflow.com/a/9046288/2767703Você pode usar o método jQuery find
A solução acima funciona perfeitamente, mas eu escolho adicionar o código a seguir para que eles desejem obter a opção clicada. Ele permite que você obtenha a opção selecionada mesmo quando esse valor selecionado não foi alterado. (Testado apenas com Mozilla)
fonte
option
eventos é uma proposta arriscada, principalmente em dispositivos móveis. Por exemplo, o Webkit não oferece suporte a esse evento corretamente: bugs.chromium.org/p/chromium/issues/detail?id=5284Alternativa delegada
Caso alguém esteja usando a abordagem delegada para o ouvinte, use
e.target
(ele se referirá ao elemento select).JSFiddle Demo
fonte
Acho isso mais curto e limpo. Além disso, você pode percorrer os itens selecionados se houver mais de um;
fonte
selectedOptions
não está disponível em todos os navegadores.this.options[ this.options.selectedIndex ]
. A Mozilla diz que é suportado pelo Firefox a partir de 26, IE Sem suporte.Primeiro crie um
select option
. Depois disso,jquery
você poderá obter o valor selecionado atual quando o usuário alterar oselect option
valor.fonte
fonte
Outra e curta maneira de obter valor do valor selecionado,
fonte
Consulte a documentação oficial da API https://api.jquery.com/selected-selector/
Isso funciona bem:
e
e seja fácil para uma escolha única
fonte
Você pode usar este evento de alteração de seleção jquery para obter o valor da opção selecionada
Para demonstração
fonte