如何获取数字元素的文本并使用jquery放入数组?

时间:2016-04-05 12:04:56

标签: javascript jquery

我尝试获取数字元素的文本并使用jquery放入数组。但是得到以下错误:

  

未捕获的TypeError:aTags [i] .parent不是函数。

如何解决这个问题?

    $('#flight-stops-filter ul li a').click(function() {
    var aTags=$('#flight-stops-filter ul li a');
    stops = [];
    for (var i = 0; i < aTags.length; i++) {
        if (aTags[i].parent("li").hasClass('active')) {
            alert(this.text);
            stops.push(this.text.substr(0, 1));
        }
    }

});

4 个答案:

答案 0 :(得分:2)

使用括号表示时

eq(index)

它返回一个DOM节点

您想使用aTags.eq(i).parent("li")

this.text

现在在循环中使用text也可能是错误的,因为DOM中没有$('#flight-stops-filter ul li a').click(function() { var aTags=$('#flight-stops-filter ul li a'); stops = []; for (var i = 0; i < aTags.length; i++) { var li = aTags.eq(i).parent("li"); if (li.hasClass('active')) { console.log(li.text()); stops.push(li.text().substr(0, 1)); } } }); 属性。

所以你可能想要的是

{{1}}

答案 1 :(得分:1)

aTags是Jquery对象,其中包含纯DOM对象。因此,如果不将它们包装在jquery中,您将无法在纯DOM对象上调用jquery方法。

替换你的for循环
   aTags.each(function(){
     if( $(this).parent("li").hasClass('active'))
     {
         alert(this.text);
         stops.push(this.text.substr(0, 1));
     }
   });

正如jquery learning documentation中所述,不是通过括号表示法访问,而是需要通过jquery的eq方法访问它。

aTags.eq( 0 );//for first DOM object wrapped inside a jquery object

用于访问DOM对象

aTags.get(0) ;//same as aTags[0]; 

答案 2 :(得分:0)

将变量包装在jQuery对象中(将_drawerLayout.setScrimColor(Color.argb(128, 255, 255, 255)); 更改为aTags[i].parent):

$(aTags[i]).parent

或:

if ($(aTags[i]).parent("li").hasClass('active')) {
   alert(this.text);
   stops.push(this.text.substr(0, 1));
}

答案 3 :(得分:0)

其他人已经很好地解释了错误的原因。这个替代方案既直截了当,也没有机会遇到这个错误:

var links = $('#flight-stops-filter ul li a');
links.click(function() {
    stops = links.parent('.active').find('a').map(function() {
        return $(this).text().substr(0,1);
    }).get();
});