I have a table to display a somewhat 'timetable':
+------------------------------------------+                     KEY:
|NAME 00:00  00:20  00:40  01:00  01:20 etc            XXXXXXX is actually 'itemA'
|item XXXXXXXXXXXX  YYYYYYYYYYYYYYYYYYY                YYYYYYY is actually 'itemAB'
|item YYYYYYYYYYYYYYYYYYY  XXXXXXXXXXXX                ZZZZZZZ is actually 'itemABC'
|item ------------  ZZZZZZZZZZZZ  XXXXX                ------- is actually null/blank
which is made up using:
<table>
   <tr>
      <th>NAME</th><th>00:00</th><th>00:20</th><th>00:40</th><th>01:00</th><th>01:20</th><th>etc</th>
   </tr>
   <tr id="row1">
      <th>item</th>
      <td colspan="2">itemA</td>
      <td colspan="3">itemAB</td>
   </tr>
   <tr>
      <th>item</th>
      <td colspan="3">itemAB</td>
      <td colspan="2">itemA</td>
    </tr>
   <tr>
      <th>item</th>
      <td colspan="2"></td>
      <td colspan="2">itemABC</td>
    </tr>
</table>
I am then using the script to create a colour co-ordination for each item:
<script>
    $("#row1 td:contains('itemA')").css("background-color", "lightBlue");
    $("#row1 td:contains('itemAB')").css("background-color", "yellow");
    $("#row1 td:contains('itemABC')").css("background-color", "lightGreen");
    $("#row1 td:contains('')").css("background-color", "Black");
</script>
However, when this is executed, ALL cells are coloured black (I only want black to appear when cell in this table is empty, no other reason).
this JSFIDDLE shows what I want it to be like. (excluding the use of making empty cells black in this table)
this JSFIDDLE shows what i'm getting if i include the last line of my script
So with whole table: this will be a design for end result, obviously without hard coding the background color.
EDIT
So, I've had plenty of guidance on the pseudo element :empty, which has been very helpful.
However, it doesn't quite work the way i expected it to, (as the last column 'etc' is, in my opinion, also 'empty', but never gets filled black:
So I end up with:
+------------------------------+
|    |    |    |    |    |ETC  |                      
+------------------------------+
|    |    itemA     |  B |                 
+------------------------+
|    |    itemB     |  A |       <-- this section here is 'part' of the table        
+------------------------+           but never is physically 'defined' using a <td> 
|    |?|?|?|?|?| C  ||?|?|           tag      
+------------------------+
       ^                      ^          
       |                      |
       |                       \
      black background           is there a way of making this 'undefined'
      (as wanted)                section also appear as being ':empty'
                                 and hence have a 'background: black'
As shown here
You can try this :
:empty pseudo selector will select empty td elements from the selected row. You can refer this updated jsfiddle.
$("#row1 td:empty").css("background-color", "Black")
Hope it is clear enough 1
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