javascript - 包围时获取元素作为 jQuery 对象失败

标签 javascript jquery html

我正在使用以下语法从 TABLE 中检索元素。

$("#table").children().children().children().html();

这给了我第一个 TD 的内容。然后我转到第二个,发现使用下面的括号语法选择它会给我一条错误消息,指出 html() 不是该对象的方法。

$("#table").children().children().children()[1].html();

相反,我必须像这样使用 innerHTML peoperty。

$("#table").children().children().children()[1].innerHTML;

我的印象是我做错了什么。在得到自己想要的结果的同时,不禁感慨还有更多推荐的方法可以解决这种调用。欢迎提出建议。

最佳答案

那是因为 html 是一个 jQuery 函数,但是 [1] 为您提供了 DOM 元素。

你可以使用.eq(n)获取第n个元素:

$("#table").children().children().children().eq(1).html();

...但是如果你循环遍历它们,重复上面的操作是非常低效的。相反,请考虑 each:

$("#table").children().children().children().each(function() {
    // Use $(this).html(); for each cell's contents
});

更新 在您说的评论中:

I'm targeting four different elements with indexes like 143, 237 etc.

在那种情况下,记住初始元素集,然后根据需要使用 .eq:

var cells = $("#table").children().children().children();
cells.eq(143).html(...);
cells.eq(237).html(...);

如果您调整表结构(例如,您可能添加了一个 colgrouprowgroup 并且现在有不同的级别),您可能还会考虑一些不那么脆弱的东西:

var cells = $("#table td");

关于javascript - 包围时获取元素作为 jQuery 对象失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21721131/

相关文章:

jquery - fancybox 下一个 上一个 或 转到

html - CSS - 标题元素在调整大小时无法正确 float

javascript - jQuery 在特定功能上加载 div 或仅在表单提交上加载

javascript - jquery 中的日期选择器只能在未来日期的 2 年零 6 个月内启用

javascript - Bacon.js 中的惰性求值是什么?

javascript - Jquery 不返回数据 IE

javascript - 简单的视差滚动不起作用

html - 如何制作 :after arrow just an outline?

JavaScript 不大于 0

javascript - <按钮类型 ="submit"> 在 IE 和 chrome 中的行为不同 : Why?