Jquery使用数组中的索引获取某些选择器的文本值

时间:2014-08-14 06:03:30

标签: javascript jquery

jQuery有以下代码:

var ths = $(".timetable__table th");
var th;

    for (var i = 0; i < ths.size(); i++) {
      th  = ths.get(i).text();
      console.log(th);
    }  

当我尝试执行此代码时,我收到以下异常:TypeError: ths.get(...).text is not a function。我不明白为什么会发生,我只需要获取标签的文本值。我该如何解决?

4 个答案:

答案 0 :(得分:2)

这样做,在此上下文中使用.each()函数遍历jquery对象的集合。

$(".timetable__table th").each(function(){
 console.log($(this).text());
});

.get(index)将返回一个javascript对象,但不包含名为.text()的函数

注意:请注意,版本1.8使用.size()代替

已弃用.length

答案 1 :(得分:1)

因为.get()返回dom元素而不是jQuery对象(.text()是jQuery包装器对象的方法)使用.eq()将返回一个jQuery对象

var ths = $(".timetable__table th");
var th;

for (var i = 0; i < ths.size(); i++) {
    th = ths.eq(i).text();
    console.log(th);
}

答案 2 :(得分:0)

.get()返回底层DOM元素,它们没有text()方法。请改用.eq()

看起来您还没有决定是否要使用DOM或jQuery。您的代码可以简化为:

$(".timetable__table th").each(function(index, el) {
    console.log($(el).text());
});

答案 3 :(得分:0)

您需要迭代像th[i]这样的数组:

var ths = $(".timetable__table th");
var th;

    for (var i = 0; i < ths.size(); i++) {
      th  = ths[i].text();
      console.log(th);
    }  

但最简单的方法是在跳过循环的地方,只需使用.each

$(".timetable__table th").each(function(){
   console.log($(this).text());
});