[jQuery]table元素和其他元素在遍历的时候有点不一样
2015-12-14 本文已影响0人
路人乙小明
希望解决的问题:
一个table元素,需要用jQuery找到第3行第4列对应的�单元格,
尝试解决方案:
$("table").children("tr:eq(2)").children("td:eq(3)")
//tr:eq(2)是给children传参数,将结果限定为tr元素,而且是第2+1=3个
//eq(2)虽然是在selector里面好像css语句的样子,但是还是javascript这一边的
//然而这两条注释并不是这篇文章主要想说的
上面的代码乍一看没问题,就是跑不起来而已。
除错:
console.log($("table").children())
//[tbody, prevObject: jQuery.fn.init[1], context: document]
console.log($("table").children().children())
//[tr, tr, tr, tr, tr, tr, tr, tr, tr, prevObject: jQuery.fn.init[1], context: document]
个人理解
- 所以table的children不是tr,而是tbody这个东西,tbody的儿子才是tr。jQuery官方api关于children()的例子只是用了div和ul这些元素,这些元素是不会冒出些divbody或者ulbody之类东西的。
- jQuery的遍历方法,除了.children(),还有.find()。如果把最开始出错的程序里面children全部改成find的话也可以顺利运行。因为find是逐级往下找的,children则限制在子这一级。
- 顺便吐槽一下,自己觉得find效率应该是没有children高的,谁叫他名字是find呢