Como fazer isso usando jQuery - document.getElementById ("selectlist"). Value

141

No jQuery, qual é o equivalente document.getElementById("selectlist").value?

Estou tentando obter o valor de um item da lista de seleção.

Obrigado.

tonyf
fonte
10
Você provavelmente está recebendo votos negativos porque suas perguntas podem ser respondidas em apenas alguns segundos no Google ou lendo os documentos do JQuery.
zombat 21/08/09
53
+1 em amígdalas por enfrentar os usuários de SO. Sua pergunta é perfeitamente válida, independentemente de quão fácil / difícil foi resolver. Mais tráfego para SO para futuras pesquisas sobre esse assunto.
Mr. Smith
7
vamos lá pessoal - o voodoo do jQuery não é tão fácil de aprender para um cara velho como eu, desenvolvedor de servidores que eu estive nos últimos 20 anos - seja legal e seja fácil com os novatos no jQuery! :-) #
2174 marc_s
1
@Boekwurm Ben - ele pode ser corajoso, mas você também não pode culpar os usuários de SO. As pessoas geralmente gostam de ver um pouco de esforço da pessoa que faz a pergunta.
zombat 21/08/09
12
Pelo que me lembro, essa foi a primeira coisa que não entendi sobre o jQuery. Eu acho que é uma pergunta válida se a verdade for dita, e a marcação foi dura. stackoverflow.com/questions/75296/…
James Wiseman

Respostas:

148
$('#selectlist').val();
ChaosPandion
fonte
1
Uau. Você ganhou o jackpot LOL.
Jacob Relkin 10/03
214

"Equivalente" é a palavra aqui

Enquanto...

$('#selectlist').val();

...é equivalente a...

document.getElementById("selectlist").value

... vale a pena notar que ...

$('#selectlist')

... embora 'equivalente' não seja o mesmo que ...

document.getElementById("selectlist")

... como o primeiro retorna um objeto jQuery, não um objeto DOM.

Para obter o (s) objeto (s) DOM do jQuery, use o seguinte:

$('#selectlist').get(); //get all DOM objects in the jQuery collection
$('#selectlist').get(0); //get the DOM object in the jQuery collection at index 0
$('#selectlist')[0]; //get the DOM objects in the jQuery collection at index 0
James Wiseman
fonte
1
talvez um pouco tangencial aqui, mas isso seria uma ótima informação: existe uma maneira de obter o objeto DOM do jQuery? edit : respondeu minha própria pergunta em edit.
Clayton Hughes
4
Eu bati minha cabeça contra uma parede por uma hora até perceber que getElementById () não pode ser substituído por $ (). Muito obrigado por esta resposta!
Knite
3
@ knite - Sim. Eu gostaria que alguém me explicasse a primeira vez que usei o jQuery.
21412 James Wiseman
1
obrigado pela explicação da parte posterior sobre como obter objetos DOM no jquery :).
kailash19
+1 Oldie, mas um goodie. Eu estava tentando descobrir por que o Google Maps aceitou um objeto DOM, mas não o meu objeto jQuery. Uma rápida pesquisa no Google me levou até aqui, não para documentos do jQuery.
TonyG
9

O caos está no local, embora, para esse tipo de perguntas, você deva consultar a documentação do Jquery on-line - é realmente bastante abrangente. O recurso que você procura é chamado de 'seletores de jquery'

Geralmente você faz $('#ID').val()- o .afterwards pode fazer várias coisas no elemento retornado do seletor. Você também pode selecionar todos os elementos em uma determinada classe e fazer algo com cada um deles. Confira a documentação para alguns bons exemplos.

RodH257
fonte
9

Isso pode ser feito de três maneiras diferentes, embora todas sejam quase as mesmas

Maneira Javascript

document.getElementById('test').value

Jquery way

$("#test").val()          

$("#test")[0].value             

$("#test").get(0).value
sayannayas
fonte
Esta é a melhor resposta. Obrigado!
Carter Medlin
2

Para aqueles que se perguntam se os seletores de ID do jQuery são mais lentos que o document.getElementById, a resposta é sim, mas não por causa do preconceito de que ele pesquisa no DOM inteiro procurando por um elemento. O jQuery realmente usa o método nativo. Na verdade, é porque o jQuery usa uma expressão regular primeiro para separar as strings no seletor a serem verificadas e, é claro, executando o construtor:

rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/

Enquanto o uso de um elemento DOM como argumento retorna imediatamente com 'this'.

Então, é isso:

$(document.getElementById('blah')).doSomething();

Sempre será mais rápido que isso:

$('#blah').doSomething();
marksyzm
fonte
0

Em alguns casos em que não consigo me lembrar por que, mas $('#selectlist').val()nem sempre retorna o valor correto do item, use-o $('#selectlist option:selected').val().

Brett Ryan
fonte
Talvez você possa postar alguns links que confirmam isso. Eu ficaria surpreso no entanto. Isso seria um bug fundamental no jQuery. É possível que você esteja usando uma versão com erros da biblioteca?
21411 James Wiseman
Poderia ter sido James, eu acho que poderia ter sido na 1.3.0, não consigo reproduzir no 1.3.2, mas também poderia ter sido no IE6 ou 7 que eu não tenho mais instalado, vou ver se eu puder descobrir a causa original e denunciá-la aqui.
Brett Ryan