私は@James Crookのコメントに完全に同意します。
しかし、私が作成したthis Codepen working exampleを試してみるとよいでしょう。
が持つselect
HTML要素のコードを次:ソリューションについて
$("select").DualListBox({
json: false // use local data
timeout: 300 // delay for filter functionality
});
として:私たちが必要とする
<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>
次のようにそのselect
HTML要素にjquery.duallistbox
を適用する最初の結果、このプラグインは2つの異なるselect
HTML要素。そして、私たちは次のようにそれらのそれぞれにjquery.msDropDown
プラグインを適用する必要があります。これにより
$("select.unselected").msDropDown();
$("select.selected").msDropDown();
、UIは準備ができています。
しかし、我々は両方のプラグインの機能を維持する必要があります。 jquery.duallistbox
ボタンの
クリック:
$('div.center-block button').on('click', updateDropdowns);
またはjquery.duallistbox
フィルタinput
フィールド内を結ぶことにより、私たちは、のいずれかによって、ユーザによって行われた変更がある更新/再レンダリングdropdowns with icons
すべての時間を必要とします:
$('input.filter').on('keyup', function(){
// Following timeout value (300) should not be lower than
// timeout option from DualListBox
setTimeout(updateDropdowns, 300);
});
これらのリスナーは、updateDropdowns
メソッドを参照していることに注意してください。ここで、DOMエレメントを使用して、各select
HTMLエレメントにjquery.msDropDown
プラグインを再度適用してドロップダウンを再レンダリングします。
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();
};
私はselect
HTML要素にoptions
の多くを扱うときに、このプロセスは、パフォーマンスに関しては高価なことができることを強調するために必要:このメソッドは次のようになります。間違いなく回避策であり、jquery.msDropDown
プラグインに実装する.redraw()
メソッドを使用することが最善の方法です。
この解決策があなたの問題解決に役立つことを願っています。
最初のリンクが壊れています。代替リンクがありますか?たとえばgithub? – Mousey
'イメージコンボコードの.msdropdown()行に例外が残っています。例外は何ですか? – jackjop