希望解決的問題:
一個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呢