2016-08-12 68 views
1
var row="<tr><td>"+segmentData.segmentName+"</td>" + 
      "<td></td>"+ 
      "<td>"+segmentData.transTimelyTotal+"</td>"+ 
      "<td></td>"+ 
      "<td>"+segmentData.transUntimelyTotal+"</td>"+ 
      "<td></td>"+ 
      "<td>"+segmentData.transAmtTimelyTotal+"</td>"+ 
      "<td></td>"+ 
      "<td>"+segmentData.transAmtUntimelyTotal+"</td>"+ 
      "</tr>"; 
     var $row=$(row) 

     var td = $("tr:nth-child(2)", $row); 

我有上面的html行描述在JavaScript中,從那裏我試圖得到td元素在位置第三,但它似乎並沒有按預期工作。jquery tr選擇器不工作

我得到一個未定義的對象,你可以看到下面的結果。

任何更好的方法來獲得td元素在位置2nd?

[prevObject: m.fn.init[1], context: undefined, selector: "tr:even"] 
+1

'$ row.find( 「TD:第n個孩子(2)」) ;'試試這個 – guradio

+0

$ row.find(「td:eq(2)」)希望這對你有用:) –

回答

1

您正在使用nth-child選擇錯誤的方式。 tr:nth-child不返回tr的孩子,而是返回tr元素,這是他們各自父母的第n個孩子。 你的選擇應該是什麼

"tr td:nth-child(2)" 

但由於良好的HTML做法是指tr元素應該只包含td元素作爲孩子,這個選擇就足夠了:

"td:nth-child(2)" 

再回到你的問題,你問選擇器的第二個td而不是第2個td。所以,上述選擇器都不是正確的。這裏是你應該使用什麼:

"td:eq(2)" 

請參閱該規範爲nth-childhere

請參閱該規範爲eqhere

0

$ row.find(「td:nth-​​child(2)」);工作