I completely agree with @James Crook comments.
However, you might want to try this Codepen working example that I created.
About the solution:
Having following select
HTML element code:
<select name="webmenu" id="webmenu">
<option value="calendar" data-image="icons/icon_calendar.gif">Calendar</option>
<option value="shopping_cart" data-image="icons/icon_cart.gif">Shopping Cart</option>
<option value="cd" data-image="icons/icon_cd.gif">CD</option>
<option value="email" selected="selected" title="icons/icon_email.gif">Email</option>
<option value="faq" data-image="icons/icon_faq.gif">FAQ</option>
<option value="games" data-image="icons/icon_games.gif">Games</option>
</select>
We need first to apply jquery.duallistbox
on that select
HTML element as follow:
$("select").DualListBox({
json: false // use local data
timeout: 300 // delay for filter functionality
});
As result, this plugin creates two different select
HTML elements. And we need to apply the jquery.msDropDown
plugin on each of them as follow:
$("select.unselected").msDropDown();
$("select.selected").msDropDown();
With this, UI is ready.

However, we need to keep functionality for both plugins. We need to update/re-render the dropdowns with icons
every time there is a change made by user either by:
clicking on jquery.duallistbox
buttons:
$('div.center-block button').on('click', updateDropdowns);
or by tying inside jquery.duallistbox
filter input
field:
$('input.filter').on('keyup', function(){
// Following timeout value (300) should not be lower than
// timeout option from DualListBox
setTimeout(updateDropdowns, 300);
});
Note that these listeners refer to a updateDropdowns
method. And here is where we play with the DOM to re-render the dropdowns by applying again jquery.msDropDown
plugin on each select
HTML elements. This method looks like:
var updateDropdowns = function(){
// Update/re-render first dropdown
$('select.selected').detach().appendTo('.col-md-5:last');
$('.col-md-5:last').find('div').remove();
delete $('select.selected').data().dd;
$('select.selected').msDropdown();
// Update/re-render second dropdown
$('select.unselected').detach().appendTo('.col-md-5:first');
$('.col-md-5:first').find('div').remove();
delete $('select.unselected').data().dd;
$('select.unselected').msDropdown();
};
I want to highlight that this process could be expensive in regards to performance when dealing with lot of options
in the select
HTML elements. Definitely it is a work-around and the best choice could be to have a .redraw()
method that should be implemented for jquery.msDropDown
plugin.
Hope this solution helps to solve your problem.