$('#show_all').click(function() {
$('#display_none_select').find('option').show();
$('#hide_options_select').hideSelectOptions(null);
});
$('#show_group1').click(function() {
$('#display_none_select').find('option:not([value=])').hide().filter('.group1').show();
$('#hide_options_select').hideSelectOptions(':not(.group1):not([value=])');
});
$('#show_group2').click(function() {
$('#display_none_select').find('option:not([value=])').hide().filter('.group2').show();
$('#hide_options_select').hideSelectOptions(':not(.group2):not([value=])');
});
$('#show_none').click(function() {
$('#display_none_select').find('option:not([value=])').hide();
$('#hide_options_select').hideSelectOptions(':not([value=])');
});
<p>
<input type="button" id="show_all" value="Show All" />
<input type="button" id="show_group1" value="Show Group 1" />
<input type="button" id="show_group2" value="Show Group 2" />
<input type="button" id="show_none" value="Show None" />
</p>
<p>
<h5>Using display:none (works only on IE and FF)</h5>
<select id="display_none_select" multiple="multiple">
<option value="">--prompt--</option>
<option value="1" class="group1">option1 group1</option>
<option value="2" class="group2">option2 group2</option>
<option value="3" class="group2">option3 group2</option>
<option value="4" class="group1">option4 group1</option>
<option value="5" class="group2">option5 group2</option>
<option value="6" class="group2">option6 group2</option>
</select>
</p>
<p>
<h5>Using hideSelectOptions</h5>
<select id="hide_options_select" multiple="multiple">
<option value="">--prompt--</option>
<option value="1" class="group1">option1 group1</option>
<option value="2" class="group2">option2 group2</option>
<option value="3" class="group2">option3 group2</option>
<option value="4" class="group1">option4 group1</option>
<option value="5" class="group2">option5 group2</option>
<option value="6" class="group2">option6 group2</option>
</select>
</p>
External resources loaded into this fiddle: