I see this post on highlighting even columns but can I highlight only selected columns?
Here is the code they use:
$("table.Table22 > tbody > tr > td:nth-child(even)").css("background","blue");
But I would like: NOTE: the class="highlight"
will be on the selected columns, so if I selected column 3 the class="highlight"
would be removed from column 2 and added to column 3. jQuery needs to add the class based on selected column.
<table class="tbl">
<tr>
<th class="firstColumn">
Cell 1:Heading
</th>
<th class="highlight">
Selected column so this should be highlighted
</th>
<th>
Cell 3:Heading
</th>
<th>
Cell 4:Heading
</th>
<th>
Cell 5:Heading
</th>
</tr>
<tr>
<td>
Cell 1:Row 1
</td>
<td class="highlight">
Selected column so this should be highlighted
</td>
<td>
Cell 3:Row 1
</td>
<td>
Cell 4:Row 1
</td>
<td>
Cell 5:Row 1
</td>
</tr>
<tr>
<td>
Cell 1:Row 2
</td>
<td class="highlight">
Selected column so this should be highlighted
</td>
<td>
Cell 3:Row 2
</td>
<td>
Cell 4:Row 2
</td>
<td>
Cell 5:Row 2
</td>
</tr>
</table>
You might want to take a look at jQuery tableHover plugin to achieve this. Then use something like this
$('table.tbl').tableHover({
colClass: 'hover',
clickClass: 'click',
headCols: true,
footCols: true
});
EDIT:
Something like this?
Working Demo - Click on any cell, to highlight the column
Code from demo -
$(function() {
var rows = $('table.tbl tr');
rows.children().click(function() {
rows.children().removeClass('highlight');
var index = $(this).prevAll().length;
rows.find(':nth-child(' + (index + 1) + ')').addClass('highlight');
});
});
have you concidered using colgroups instead of adding classes to every cell?
i only recently started to see the power of colgroups myself, and they work like this:
.highlight {
background-color: yellow;
}
<table id="myTable">
<colgroup class="highlight"></colgroup>
<colgroup></colgroup>
<colgroup></colgroup>
<colgroup></colgroup>
<colgroup></colgroup>
<thead>
<tr>
<th>header1</th>
<th>header2</th>
<th>header3</th>
<th>header4</th>
<th>header5</th>
</tr>
</thead>
<tbody>
<tr>
<td>cell a</td>
<td>cell b</td>
<td>cell c</td>
<td>cell d</td>
<td>cell e</td>
</tr>
<tbody>
<table>
this would render a table with 5 columns, where 1 column has css class to highlight the first col. so actually the only thing you have to do then, add a function to the hover of each cell, to just add the highlighting class to the corresponding colgroup.
there is a complete videoguide you can find right here:table fix header, and row + column highlighting.
*EDITED the answer because it was irrelevant, i read the question wrong, and answered to a totally different matter. (added a correct reply now)
Here's what I use for adding a cross-hair affect to my table:
$('tbody td').hover(function() {
$(this).closest('tr').find('td,th').addClass('highlight');
var col = $(this).index()+1;
$(this).closest('table').find('tr :nth-child('+col+')').addClass('highlight');
}, function() {
$(this).closest('tr').find('td,th').removeClass('highlight');
var col = $(this).index()+1;
$(this).closest('table').find('tr :nth-child('+col+')').removeClass('highlight');
});
Seems to run a bit slow on large tables though (the highlighting lags behind).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With