jquery - Selectable optgroups in Select2 -
i want create multilevel select2 options indentation don't want use optgroup elements because want allow select main categories. there way style if select2?
my raw html select looks this:
<select class="js-select-multiple"> <option class="l1">option 1</option> <option class="l2">suboption 1</option> <option class="l2">suboption 2</option> <option class="l2">suboption 3</option> <option class="l1">option 2</option> ... </select> <script>$(".js-select-multiple").select2({maximumselectionlength: 5});</script> so without using select2 can add text-indent property .l2 class. seems select2 doesn't use classes used option, styling classes won't work.
is there workaround that?
you're correct in recognizing select2 not carry css classes <option> tags results list. has not explicitly tying results list existing <option> tags, , having set of sensible defaults. it's easier add ability transfer classes afterwards remove them.
you can overriding templateresult , getting original option data.element (where data first parameter).
$('.select2').select2({ templateresult: function (data) { // care if there element pull classes if (!data.element) { return data.text; } var $element = $(data.element); var $wrapper = $('<span></span>'); $wrapper.addclass($element[0].classname); $wrapper.text(data.text); return $wrapper; } }); .l2 { padding-left: 1em; } <link href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.css" rel="stylesheet"/> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.js"></script> <select class="select2" style="width: 200px"> <option class="l1">option 1</option> <option class="l2">suboption 1</option> <option class="l2">suboption 2</option> <option class="l2">suboption 3</option> <option class="l1">option 2</option> </select> note using padding-left instead of text-indent, select2 uses nested options.
Comments
Post a Comment