2013-05-01 69 views
3

說我有如下表選擇一系列TD細胞與jQuery

<table> 
    <tr><td> #TD1 </td><td> #TD2 </td></tr> 
    <tr><td> #TD3 </td><td> #TD4 </td></tr> 
    <tr><td> #TD5 </td><td> #TD6 </td></tr> 
    <tr><td> #TD7 </td><td> #TD8 </td></tr> 
    <tr><td> #TD9 </td><td> #TD10 </td></tr> 
    <tr><td> #TD11 </td><td> #TD12 </td></tr> 
    <tr><td> #TD13 </td><td> #TD14 </td></tr> 
</table> 

與jQuery,我如何選擇

  1. #TD5,#TD7和TD9#?
  2. #TD6,#TD8和#TD10?

我對適應性解決方案很感興趣,因爲我的表可能在列和行中有所不同,我可能需要選擇4行而不是3行。

到目前爲止,我已經得到了

$("table tr:gt(1) td:nth-child(1)").css('color','red') 

但它不停止在#TD11

也見http://jsfiddle.net/2ygJk/

回答

1

這應該這樣做。關鍵是要選擇那些大於一個索引小於另一個索引行:

$("table tr:gt(1):lt(3) td:nth-child(1)").css('color','red'); // 5,7,9 
$("table tr:gt(1):lt(3) td:nth-child(2)").css('color','blue'); // 6,8,10 

http://jsfiddle.net/mblase75/EaZsG/

+1

這一定是我所遇到過的最醜陋的選擇的一個(沒有犯罪!):PI不想看到,在代碼我正在努力.... – Lix 2013-05-01 16:49:44

+2

@Lix似乎對我很清楚。希望你不要對正則表達式產生同樣的厭惡,因爲無論它們是多麼「醜陋」,它們都是不可或缺的。 – Blazemonger 2013-05-01 16:51:09

+0

Naaa ...正則表達式很漂亮;)選擇器試圖做的事很清楚 - 但是當我遇到像這樣的複雜選擇器時,我通常會退後一步並重新考慮我的邏輯或標記結構...只是我自己喜歡可讀性我猜... – Lix 2013-05-01 16:52:38

2

jQuery Filter是你的朋友

var indexes = [5,7,9]; // the indexes you would like to filter out 

var filterdCelles = $('td').filter(function(i){ 
    return indexes.indexOf(i) > -1; 
}) 

然後你可以這樣做:

filterdCelles.css('color','red'); // changes the font to this color 
+0

'filter'返回元素,如果條件爲'true','return indexes.indexOf(index)> -1' – undefined 2013-05-01 16:55:07