skip to Main Content

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');

4

Answers


  1. 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.

    Login or Signup to reply.
  2. Try:

    $(".clickable-row").click(function(){
        if($(this).hasClass("highlight"))
            $(this).removeClass('highlight');
        else
            $(this).addClass('highlight').siblings().removeClass('highlight');
    })
    
    Login or Signup to reply.
  3. i have used this script on bootstrap-table.

    $('#tb-pegawai').on('change', 'tr' , function (event) {
                if($('.selected')){ // } })
    
    Login or Signup to reply.
  4. 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.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search