[英]How to get text of number elements and put into array with 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));
}
}
});
使用括號表示法時
aTags[i].parent("li")
它返回一個DOM節點
您想使用eq(index)
aTags.eq(i).parent("li")
現在在循環內部使用this.text
可能也是錯誤的,因為DOM中沒有text
屬性。
所以你可能想要的是
$('#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));
}
}
});
aTags
是aTags
對象,其中包含純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學習文檔中的此處建議,而不是通過方括號表示法訪問,您需要通過eq
方法訪問它。
aTags.eq( 0 );//for first DOM object wrapped inside a jquery object
用於訪問DOM對象
aTags.get(0) ;//same as aTags[0];
將變量包裝在jQuery對象中(將aTags[i].parent
為$(aTags[i]).parent
):
if ($(aTags[i]).parent("li").hasClass('active')) {
alert(this.text);
stops.push(this.text.substr(0, 1));
}
要么:
$('#flight-stops-filter ul li a').click(function() {
var lis=$('#flight-stops-filter ul li.active');
if (lis.length > 0 ) {
alert(this.text);
}
}
錯誤的原因已經由其他人很好地解釋了。 這種選擇既簡單又直接,您不可能遇到該錯誤:
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();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.