2013-05-01 5 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 строки, а не три.

До сих пор я получил

$("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

+2

@Lix Кажется совершенно ясным для меня. Надеюсь, у вас нет равного отвращения к регулярным выражениям, потому что они незаменимы, независимо от того, насколько они «уродливы». – Blazemonger

+0

Naaa ... regexes are are pretty;) Ясно, что пытается сделать селектор - однако, когда я сталкиваюсь с такими сложными селекторами, как этот, я обычно хочу сделать шаг назад и переосмыслить свою логику или разметку структура ... Только мое собственное предпочтение читаемости, я думаю .. – Lix

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

Смежные вопросы