jQuery获取第n个元素的值

4

你好。我使用搜索但没有找到我需要的答案,我认为这是一个常见的问题。

有没有办法通过jQuery获取第n个元素的值?以下是一个简单的例子:

假设我们有n个输入框具有相同的类名。我认为最简单的方法是使用$(".some_class").get(n-th).val()来获取第n个输入框的值。但是当我们使用get()时,它返回的是

对象 #HTMLInputElement

因此,在使用val()之后,我们会收到错误提示:

未捕获的类型错误:对象 #HTMLInputElement没有方法'val'。

在这种情况下,有没有只使用jQuery方法的解决方案?


请分享你的jQuery代码。 - Able Alias
@ Delphian,好的 shortcode += "[toggle title='"+$('.toggle_title').get(i-1).val()+"' open='yes']"; - Valery Statichny
1
了解更多: eq元素 http://api.jquery.com/eq-selector/ - Able Alias
1
$("some_class:eq(n-th)").val(); 中的 n-th 值从0开始。 - Tushar Gupta - curioustushar
@Tushar Gupta,抱歉让你感到困惑。之前的代码包含 **for(var i=1; i<=$('.toggle_title').length; i++)**,因此索引应该减一。 - Valery Statichny
6个回答

2

请使用eq代替:

$(".some_class").eq(n-th).val()

eq 构造了一个新的 jQuery 对象,该对象是从集合中指定的元素创建的。


2
您可以使用nth-child获取第n个元素的列表,然后在其中一个上使用val。
$(".some_class input:nth-child(2)").eq(0).val()

“:nth-child(n)”伪类很容易与“:eq(n)”混淆,尽管两者可能匹配到截然不同的元素。使用“:nth-child(n)”,会对所有子元素进行计数,无论它们是什么,只有当指定的元素与附加到伪类的选择器匹配时才会被选中。而使用“:eq(n)”,只会计数附加到伪类的选择器,不限于任何其他元素的子元素,并且会选择第(n+1)个元素(其中n是从0开始计数的)。如果您只想获取某个类“.some_class”中的第n个输入,则可以简单地使用“eq()”。reference
$(".some_class").eq(0).val()

1
$("element:nth-child(1)").val();
$("element:nth(0)").val();
$("element:eq(0)").val();

1

在一行中使用代码如下:

$('container').eq('n');

1
你可以使用 jQuery 中的 eq。

$('selector').eq('number')


0

jQuery().get() 方法返回实际的 HTML 元素,而不是 jQuery 对象(因此它没有 .val() 方法)。您需要使用 .value 或者使用 [] 检索索引。

例如:

 $(".some_class").get(n-th).value;

或者

 $(".some_class")[n-th].val();

$(".some_class")[n-th].val(); 也会返回 HTML 对象。 - Valery Statichny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接