如何使用jQuery-document.getElementById(“ selectlist”)。value


141

在jQuery中,等效于document.getElementById("selectlist").value什么?

我试图获取选择列表项的值。

谢谢。


10
您可能会感到不满,因为您的问题可以在Google上几秒钟内回答,或者通过阅读JQuery文档来回答。
zombat

53
扁桃体+1,以壮大SO的用户。他的问题很完美,无论解决起来有多容易。SO的流量增加,以便将来对此主题进行搜索。
史密斯先生

7
来吧,伙计们-对于像我这样的老家伙,过去20多年的服务器开发者来说,jQuery voodoo并不是那么容易学习的-很好,对我们jQuery新手也要轻松一点!:-)
marc_s

1
@Boekwurm Ben-他可能很勇敢,但您也不能怪SO用户。人们通常喜欢看到提出问题的人的一点努力。
zombat

12
我记得,这是我不了解jQuery的第一件事。我认为这是一个有效的问题,如果说出真相,那么降低成本就很严厉。stackoverflow.com/questions/75296/...
詹姆斯·怀斯曼

Answers:



214

“等价”是这里的词

而...

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

...相当于...

document.getElementById("selectlist").value

值得注意的是

$('#selectlist')

...虽然“等同”与...不同

document.getElementById("selectlist")

...由于前者返回jQuery对象,而不是DOM对象。

要从jQuery对象获取DOM对象,请使用以下代码:

$('#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

1
也许在这里有点切线,但这将是一个很好的信息:是否有一种方法可以从jQuery对象获取DOM对象? 编辑:在编辑中回答了我自己的问题。
克莱顿·休斯

4
我把头撞在墙上一个小时,直到我意识到getElementById()不能用$()代替。非常感谢您的回答!
knite 2012年

3
@knite-是的。我希望有人在我第一次使用jQuery时向我解释一下。
詹姆斯·怀斯曼

1
感谢您稍后对在jquery中获取DOM对象的说明:)。
kailash19年

+1老歌,但好吃的东西。我试图弄清楚为什么Google Maps接受DOM对象却不接受我的jQuery对象。快速的Google搜索将我引到了这里,而不是jQuery文档。
TonyG

9

混乱无处不在,但是对于这些问题,您应该在线查看Jquery文档 -它确实非常全面。您追求的功能称为“ jquery选择器”

通常,您$('#ID').val()可以这样做-.afterwards可以对选择器返回的元素执行很多操作。您还可以选择特定类上的所有元素,并对每个元素进行操作。查看文档中的一些好例子。


9

可以通过三种不同的方式来完成,尽管它们几乎都是相同的

Javascript方式

document.getElementById('test').value

jQuery方式

$("#test").val()          

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

$("#test").get(0).value

这是最好的答案。谢谢!
卡特·梅德林2014年

2

对于那些想知道jQuery id选择器是否比document.getElementById慢的人,答案是肯定的,但这不是因为人们对它在整个DOM中进行搜索以寻找元素的先入之见。jQuery实际上确实使用了本机方法。实际上,这是因为jQuery首先使用正则表达式来分离选择器中要检查的字符串,当然还要运行构造函数:

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

而使用DOM元素作为参数立即返回“ this”。

所以这:

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

将永远比这更快:

$('#blah').doSomething();

0

在某些情况下,我不记得为什么,但$('#selectlist').val()不会总是返回正确的项目值,所以我$('#selectlist option:selected').val()改用了。


也许您可以发布一些链接来确认这一点。但是我会感到惊讶。这将是jQuery中的一个基本错误。您是否可能使用的是错误版本的库?
James Wiseman

可能是James,我认为它可能在1.3.0中,似乎无法在1.3.2中复制,但它也可能在IE6或7中,而我不再安装了,我会看到如果我能找出最初的原因并在这里报告。
Brett Ryan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.