http://jsfiddle.net/9ggw1cds/
HTML
<select class="colorMeBlue noValue">
<option value>--Select--</option>
<option value="60">Salaried Employee</option>
<option value="61">Trainee</option>
<option value="62">Skilled Worker</option>
</select>
CSS
select.colorMeBlue.noValue,
select.colorMeBlue option:first-child {
color: blue;
}
select.colorMeBlue option:not(:first-child) {
color: black;
}
JAVASCRIPT
$('select').on('change', function(){
var $this = $(this);
if (!$this.val()) {
$this.addClass('noValue');
} else {
$this.removeClass('noValue');
}
});
This logic makes at least two assumptions. 1) That you are able to add the two classes (or whatever you choose to make them) to the select elements and 2) the elements exist at the time that the binding executes.
If the content is being added dynamically to the page, then you will need a manner to know when the elements are created so you can add the classes and bind to the elements.
Alternatively, if you do not know when the elements will be added, but you do know they will be added to a container element, you can bind to that instead with a delegate. For instance...
<div class="selectContainer">
<select class="colorMeBlue noValue">
<option value>--Select--</option>
<option value="60">Salaried Employee</option>
<option value="61">Trainee</option>
<option value="62">Skilled Worker</option>
</select>
</div>
In this case, if you knew that selectContainer was going to be on the page before you ran your binding and the inside select was going to be generated dynamically later on, you could instead bind with...
$('.selectContainer').on('change', 'select', function(){
var $this = $(this);
if (!$this.val()) {
$this.addClass('noValue');
} else {
$this.removeClass('noValue');
}
});
At that point, it would not matter when the selects were generated.