4

再会。我使用搜索但没有找到我正在寻找的答案,我认为这是一个常见问题。

是否有任何解决方案可以通过 jQuery 获取第 n 个元素的值?

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

对象#HTMLInputElement

所以在使用它之后val()我们得到了错误:

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

有什么解决方案在这种情况下只使用 jQuery 方法吗?

4

6 回答 6

2

改用eq

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

eq从您在集合中指定的元素构造一个新的 jQuery 对象。

于 2013-08-27T15:23:26.540 回答
2

您将使用第 n 个子元素获得第 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()

$(".some_class").eq(0).val()
于 2013-08-27T15:23:40.820 回答
1

您可以将 eq 与 jQuery 一起使用

$('选择器').eq('数字')

于 2013-08-27T15:25:26.357 回答
1
$("element:nth-child(1)").val();
$("element:nth(0)").val();
$("element:eq(0)").val();
于 2013-08-27T15:25:58.703 回答
1

在一行中使用代码:

$('container').eq('n');
于 2013-08-27T18:09:41.693 回答
0

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

例如

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

或者

 $(".some_class")[n-th].val();
于 2013-08-27T15:25:56.303 回答