Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery - OnClick, change background color for table cells always when clicked

For example: You have a table, and it has 4 tds and 2 trs. Table's background color is white. If i click to A td, A td should be red, than if i click to B, B td should be red and A td should be red too. If i click to C than, C should be red and B and A should be red too.

I have something like this. But it isnt good, because when i click again i want to change color back to white.

http://jsfiddle.net/k8UgT/193/

The code i use

<table>
    <tr>
        <td onclick="function()">AAA</td>
        <td onclick="function()">BBB</td>
        <td onclick="function()">CCC</td>
    </tr>
        <tr>
        <td onclick="function()">DDD</td>
        <td onclick="function()">EEE</td>
        <td onclick="function()">FFF</td>
    </tr>
</table>

JS:

$( function() {
  $('td').click( function() {
    $(this).css('background', '#aaa')
  } );
} );
like image 206
Karol Avatar asked Oct 27 '13 12:10

Karol


3 Answers

Welcome to SO.

First of all you don't need to onclick attribute on the td's. Second of all I would suggest using a CSS class instead of setting the background color.

CSS

.red-cell {
   background: #F00; /* Or some other color */
}

JS

$( function() {
  $('td').click( function() {
    $(this).toggleClass("red-cell");
  } );
} );

Read more about toggleClass here. Updated fiddle

like image 163
Hugo Tunius Avatar answered Sep 26 '22 03:09

Hugo Tunius


Use a CSS class for the red background and then use .toggleClass() in your JavaScript.

JavaScript

$('td').click( function() {
    $(this).toggleClass('on');
});

CSS

td.on {
    background-color: red;
}

Updated Fiddle

like image 32
techfoobar Avatar answered Sep 24 '22 03:09

techfoobar


try this:

$( function() {
  $('td').click( function() {
      if($(this).attr('style'))
    $(this).removeAttr('style');
      else
    $(this).css('background', '#aaa')
  } );
} );
like image 39
Rasool Ghafari Avatar answered Sep 24 '22 03:09

Rasool Ghafari