jQuery obter texto de tag de opção específica

Tudo bem, digamos que eu tenho isso:

 Option A Option B Option C  

Como seria o seletor se eu quisesse obter a “Opção B” quando eu tivesse o valor ‘2’?

Observe que isso não está perguntando como obter o valor de texto selecionado , mas apenas qualquer um deles, seja selecionado ou não, dependendo do atributo de valor. Eu tentei:

 $("#list[value='2']").text(); 

Mas isto não está funcionando.

Ele está procurando por um elemento com a list id que tem um value propriedade igual a 2. O que você quer é o filho da option da list .

 $("#list option[value='2']").text() 

Se você gostaria de obter a opção com um valor de 2, use

 $("#list option[value='2']").text(); 

Se você quiser obter qualquer opção selecionada, use

 $("#list option:selected").text(); 

Isso funcionou perfeitamente para mim, eu estava procurando uma maneira de enviar dois valores diferentes com opções geradas pelo MySQL, e o seguinte é genérico e dynamic:

$(this).find("option:selected").text();

Como mencionado em um dos comentários. Com isso consegui criar uma function dinâmica que funciona com todas as minhas checkboxs de seleção que eu quero obter os dois valores, o valor da opção e o texto.

Poucos dias atrás percebi que ao atualizar o jQuery do 1.6 para o 1.9 do site eu usava esse código, isso parava de funcionar … provavelmente era um conflito com outro pedaço de código … enfim, a solução era remover opção do find () chamada:

 $(this).find(":selected").text(); 

Essa foi a minha solução … use-a somente se você tiver algum problema depois de atualizar seu jQuery.

Baseado no HTML original publicado por Paolo I veio o seguinte.

 $("#list").change(function() { alert($(this).find("option:selected").text()+' clicked!'); }); 

Foi testado para funcionar no Internet Explorer e no Firefox.

 $("#list option:selected").each(function() { alert($(this).text()); }); 

para vários valores selecionados no elemento #list .

  1. Se houver apenas uma tag de seleção na página, você poderá especificar select dentro do id ‘list’

     jQuery("select option[value=2]").text(); 
  2. Para obter o texto selecionado

     jQuery("select option:selected").text(); 

Tente o seguinte:

 $("#list option[value=2]").text(); 

A razão pela qual seu snippet original não estava funcionando é porque suas tags OPTION são filhos da sua tag SELECT , que possui a list id .

Esta é uma pergunta antiga que não foi atualizada em algum momento, a maneira correta de fazer isso agora seria usar

 $("#action").on('change',function() { alert($(this).find("option:selected").text()+' clicked!'); }); 

Eu espero que isso ajude 🙂

 $(this).children(":selected").text() 

Eu queria pegar o label selecionado. Isso funcionou para mim no jQuery 1.5.1.

 $("#list :selected").text(); 
 $("#list [value='2']").text(); 

deixe um espaço depois do seletor de id.

Você pode obter o texto da opção selecionada usando a function .text();

você pode chamar a function assim:

 jQuery("select option:selected").text(); 

Enquanto “looping” através de elementos selecionados criados dinamicamente com um .each (function () …): $("option:selected").text(); e $(this + " option:selected").text() não retornou o texto da opção selecionada – em vez disso, foi null.

Mas a solução de Peter Mortensen funcionou:

 $(this).find("option:selected").text(); 

Eu não sei porque a maneira usual não tem sucesso em um .each() (provavelmente meu próprio erro), mas obrigado, Peter. Eu sei que essa não era a pergunta original, mas estou mencionando isso “para iniciantes que passam pelo Google”.

Eu teria começado com $('#list option:selected").each() exceto que eu precisava pegar coisas do elemento select também.

Usar:

 function selected_state(){ jQuery("#list option").each(function(){ if(jQuery(this).val() == "2"){ jQuery(this).attr("selected","selected"); return false; } }); } jQuery(document).ready(function(){ selected_state(); }); 

Eu estava olhando para obter val pelo nome do campo interno em vez de ID e veio do google para este post que ajuda, mas não encontrou a solução que eu preciso, mas eu tenho a solução e aqui está:

Isso pode ajudar alguém procurando por um valor selecionado com o nome interno do campo, em vez de usar o ID longo para as listas do SharePoint:

 var e = $('select[title="IntenalFieldName"] option:selected').text(); 

Eu precisava dessa resposta enquanto estava lidando com um object dinamicamente convertido, e os outros methods aqui não pareciam funcionar:

 element.options[element.selectedIndex].text 

Isso, claro, usa o object DOM em vez de analisar seu HTML com nodeValue, childNodes, etc.

Uma dica: você pode usar o código abaixo se seu valor for dynamic:

 $("#list option[value='"+aDynamicValue+"']").text(); 

Ou (melhor estilo)

 $("#list option").filter(function() { return this.value === aDynamicValue; }).text(); 

Como mencionado no jQuery, obtenha um texto de tag de opção específico e coloque a variável dinâmica no valor

Como uma solução alternativa, você também pode usar uma parte de contexto do seletor jQuery para encontrar o (s) elemento (s) com value="2" dentro da lista suspensa:

 $("option[value='2']", "#list").text(); 

Eu queria uma versão dinâmica para selecionar vários que mostraria o que está selecionado à direita (gostaria de ter lido e visto $(this).find … mais cedo):

   

Você pode obter uma das seguintes maneiras

 $("#list").find('option').filter('[value=2]').text() $("#list").find('option[value=2]').text() $("#list").children('option[value=2]').text() $("#list option[value='2']").text() 
 $(function(){ console.log($("#list").find('option').filter('[value=2]').text()); console.log($("#list").find('option[value=2]').text()); console.log($("#list").children('option[value=2]').text()); console.log($("#list option[value='2']").text()); });