2012-06-12 87 views
1

只是看看是否有更好的方式來做到這一點。對於HTML表格列中的每個單元格,做X?

可以說我有你的標準HTML表格,只有幾行和幾列數據。我想要做的是對屬於該列的每一行或單元應用一個函數。我現在正在嘗試的是一個3深度循環,在實踐中並不是最好的。

<table id="myTable"> 
<thead> 
<tr> 
    <th>Last Name</th> 
    <th>First Name</th> 
    <th>Email</th> 
    <th>Due</th> 
    <th>Web Site</th> 
</tr> 
</thead> 
<tbody> 
<tr> 
    <td>Smith</td> 
    <td>John</td> 
    <td>[email protected]</td> 
    <td>$50.00</td> 
    <td>http://www.jsmith.com</td> 
</tr> 
<tr> 
    <td>Bach</td> 
    <td>Frank</td> 
    <td>[email protected]</td> 
    <td>$50.00</td> 
    <td>http://www.frank.com</td> 
</tr> 
<tr> 
    <td>Doe</td> 
    <td>Jason</td> 
    <td>[email protected]</td> 
    <td>$100.00</td> 
    <td>http://www.jdoe.com</td> 
</tr> 
<tr> 
    <td>Conway</td> 
    <td>Tim</td> 
    <td>[email protected]</td> 
    <td>$50.00</td> 
    <td>http://www.timconway.com</td> 
</tr> 
</tbody> 
</table> 

可以說,我希望利用該網站列字符串或者做一些整齊吧。 我可能會:

*select the tbody using dom selector or jquery. 
*for loop with each column 
    *check if the data is what i want 
*for loop for each row 
    *do my function to each cell 

這可能是一個有點慢,我總是儘量避免嵌套循環時,我可以。 是否有可能使用Dom將列作爲容器對待?

IE for (cell x in Column y) 
{ doMyfunction(); } 

回答

2

如果您使用jQuery,您可以使用.each()函數:

$('#myTable td').each(function() { 
    // action to perform. Use $(this) for changing each cell 
}); 

如果你知道你只想改變一行中的一個特定單元格,那麼一旦你知道它是哪個單元格,使用:eq()或:nth-​​child()選擇器將允許特定的單元格在行中沒有其他人被操縱。

下面的代碼將操縱第一單元格的行中,作爲用於當量()中的索引從0開始

$('#myTable tr td:eq(0)').each(function() { 
    // action to perform. Use $(this) for changing each cell 
}); 

下面的代碼也會操縱第一子,但指數爲nth-孩子()從1開始

$('#myTable tr td:nth-child(1)').each(function() { 
    // action to perform. Use $(this) for changing each cell 
}); 
+0

非常好的功能。甚至沒有意識到這一點。 – Overtone

0

使用jQuery

$("td", "#myTable tbody").each(function(index, elem){ 
// do my stuff here 
}); 
+0

想知道,是'每個'甚至有必要嗎? – Mohamad

+0

取決於。如果他想綁定相同的功能,那麼不需要。如果他想根據索引做不同的事情,那麼是的。 –

1

如果你只是想樣式它的速度更快用css

tbody tr td:nth-child(4){font-weight:bold;} 

據我知道你也可以使用JQuery的那個CSS選擇器