这是一个包含3个元素的HTML页面,其中包含一个" .list"类。那些" .list"元素有" li"他们中的元素,以及那些" li"元素,有文字。我想循环遍历所有" li"元素,并使用jQuery将其文本推送到数组。
这是我到目前为止所做的:
var arr = [];
$(".list").each(function() {
this.children("li").each(function() {
arr.push(this.innerHTML);
});
});
但是,我从控制台收到错误。
错误:
Uncaught TypeError: undefined is not a function
我做错了什么,我该如何解决?
答案 0 :(得分:3)
this
循环中.each()
的值将是对元素的引用,而不是对jQuery对象的引用。因此:
$(".list").each(function() {
$(this).children("li").each(function() {
arr.push(this.innerHTML);
});
});
即$(this).children
而不是this.children
。
请注意,您可以避开外部.each()
(并不是说有任何可怕的事情):
$(".list > li").each(function() {
arr.push(this.innerHTML);
});
答案 1 :(得分:0)
尝试以下代码。这对你有用
var arr = [];
var div = $(".list");
div.each(function() {
div.children("li").each(function() {
arr.push(this.innerHTML);
});
});
console.log(arr);