我正在使用以下语法从 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(...);
如果您调整表结构(例如,您可能添加了一个 colgroup
或 rowgroup
并且现在有不同的级别),您可能还会考虑一些不那么脆弱的东西:
var cells = $("#table td");
关于javascript - 包围时获取元素作为 jQuery 对象失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21721131/