I am using Twitter Bootstrap table with clickable rows that are highlighted when hovered over (I can get rid of the hover feature if it makes this easier). I want the selected row to remain highlighted until another row is clicked or it is reclicked.
$( document ).ready(function() {
$('#myTable').on('click', 'tbody tr', function(event) {
// console.log("test ");
});
and the table
<table class="table table-bordered table-hover" id="myTable">
<tbody>
<tr>
<tr class='clickable-row'>
I tried this code in the JS but didn't work
$(this).addClass('highlight').siblings().removeClass('highlight');
Bootstrap Highlight Table Row On Hover: To highlight table row on hover in bootstrap, you have to simply use . table-hover class with table element. There's no need for javascript.
To select an entire table, click in the table, and then click the Table Move Handle in the upper-left corner. To select a row, column, cell, or group of cells, click and drag your mouse pointer to highlight the cells you want.
When you create Web pages in HTML, you can use JavaScript functions to alter the appearance of page elements on user interaction. To highlight certain rows in a table, you can set Cascading Style Sheet declarations for these rows in their normal state and in their highlighted state.
You are quite close. Targeting the .clickable-row
class on your $("#myTable").on(...)
event and using Bootstrap's .active
class should work for you:
HTML:
<table class="table table-bordered" id="myTable">
<tr class="clickable-row">
<th>Example</th>
</tr>
<tr class="clickable-row">
<th>Example 2</th>
</tr>
</table>
Javascript:
$('#myTable').on('click', '.clickable-row', function(event) {
$(this).addClass('active').siblings().removeClass('active');
});
And a Bootply Example
Note: If you left .table-hover
on your table, you'd have to use a different class than .active
, such as .bg-info
(which would be a blue hightlight)
To remove a highlight from the row (ie click again), check if the row has the class and remove it:
$('#myTable').on('click', '.clickable-row', function(event) {
if($(this).hasClass('active')){
$(this).removeClass('active');
} else {
$(this).addClass('active').siblings().removeClass('active');
}
});
See @BravoZulu's answer for original information.
Try:
$(".clickable-row").click(function(){
if($(this).hasClass("highlight"))
$(this).removeClass('highlight');
else
$(this).addClass('highlight').siblings().removeClass('highlight');
})
To show the painted row of a color, indicating that it is selected, you can use data-row-style = 'formatterRowUtSelect'
Inside your code, you can add this method:
formatterRowUtSelect = function (row, index) {
if (row.fieldOfMyObject == $ ('#fieldOfMyObject'). val ())
return {classes: 'row-selected'};
return {};
}
Do not forget to create the css for the selected row:
.row-selected {
background-color: #a9f0ff !important;
font-weight: bold;
}
I hope it serves you, Greetings.
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