希望解決的問題:
一個table元素蜕依,需要用jQuery找到第3行第4列對應(yīng)的?單元格纠亚,
嘗試解決方案:
$("table").children("tr:eq(2)").children("td:eq(3)")
//tr:eq(2)是給children傳參數(shù)辩尊,將結(jié)果限定為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關(guān)于children()的例子只是用了div和ul這些元素,這些元素是不會冒出些divbody或者ulbody之類東西的审胸。
- jQuery的遍歷方法亥宿,除了.children(),還有.find()砂沛。如果把最開始出錯的程序里面children全部改成find的話也可以順利運行烫扼。因為find是逐級往下找的,children則限制在子這一級尺上。
- 順便吐槽一下材蛛,自己覺得find效率應(yīng)該是沒有children高的,誰叫他名字是find呢