javascript - jQuery 每次迭代中未定义的元素

标签 javascript jquery

我正尝试按如下方式迭代一组 jQuery 元素:

var l = $(".ace_line").length;
$(".ace_line").each($(function(index,element) {
    console.log("Element = " + element);
    console.log(index + ": " + element.text());
}));

当我检查 l 时,它的值为 39,所以我知道该集合不为空。 但是,当我循环遍历集合时,element 是未定义的。

我做错了什么?

任何帮助将不胜感激!

最佳答案

这里有几个问题:

  1. 您将回调包装在 $() 中,这让 jQuery 认为您使用的是 $(document).ready(function... )。由于 DOM 已准备就绪,它调用该函数(一次)将 jQuery 实例作为第一个参数传递给它,根本没有第二个参数。

  2. 没有元素 周围使用$()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

请注意,更正常的做法是使用this:

var l = $(".ace_line").length;
$(".ace_line").each(function(index) {
    var $el = $(this);                        // <===
    console.log("Element = " + $el);
    console.log(index + ": " + $el.text());   // <===
});

关于javascript - jQuery 每次迭代中未定义的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31918753/

相关文章:

javascript - 使用相同的类使用单击方法按其类显示最近的隐藏元素

javascript - 我想在 .subscribe 内创建一个本地存储,但它在所有函数之后创建本地存储

javascript - 如何用曲线连接谷歌地图中的点?

jquery - Bootstrap 崩溃需要点击两次才能在 Joomla 网站上打开

javascript - 主干集合仅包含 1 个对象对象,如何使每个嵌套对象成为一个模型?

javascript - Gatsby.js 的 GraphQL 查询回调

javascript - jQuery UI 的可排序更新事件未触发

javascript - 我想在 jQuery 上获取 $(this) 内元素的文本内容

JavaScript Zlib 解压

php - 加载动态 php 和 mysql 页面而不刷新 - AJAX