我正在尝试迭代jQuery元素的集合,如下所示:
var l = $(".ace_line").length;
$(".ace_line").each($(function(index,element) {
console.log("Element = " + element);
console.log(index + ": " + element.text());
}));
Run Code Online (Sandbox Code Playgroud)
当我检查l
它的值是39所以我知道该集合不是null.但是element
当我遍历集合时,未定义.
我究竟做错了什么?
任何帮助,将不胜感激!
那里有几个问题:
你正在回调你的回调$()
,这让jQuery认为你正在使用简写版本$(document).ready(function...)
.由于DOM已准备就绪,它会调用该函数(一次)将jQuery
实例作为第一个参数传递,而根本不传递第二个参数.
你没有$()
在附近使用element
.element
将只是一个DOM元素,而不是一个jQuery实例,所以要调用text
它,你需要先包装它.
所以:
var l = $(".ace_line").length;
$(".ace_line").each(function(index,element) {
// No $( here ------^
var $el = $(element); // <=== Do wrap `element`
console.log("Element = " + $el);
console.log(index + ": " + $el.text()); // <=== Use $el
}); // <== Removed a ) here
Run Code Online (Sandbox Code Playgroud)
请注意,更常见的事情是使用this
:
var l = $(".ace_line").length;
$(".ace_line").each(function(index) {
var $el = $(this); // <===
console.log("Element = " + $el);
console.log(index + ": " + $el.text()); // <===
});
Run Code Online (Sandbox Code Playgroud)