select2 tags colored (by selection order)
by beaver71
HTML
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css">
<div class="container">
<select multiple="multiple" id="myList">
<option value="1">Apple</option>
<option value="2">Mango</option>
<option value="3">Orange</option>
<option value="4">Banana</option>
<option value="5">Kiwi</option>
</select>
</div>
CSS
.select2-selection__choice {
color: white;
}
JavaScript
var colors = ["red", "blue", "green", "orange", "yellow"];
$(document).ready(function() {
var checkList = [1, 3];
$("#myList").select2({
width: "100%",
templateSelection: function (data, container) {
var selection = $('#myList').select2('data');
var idx = selection.indexOf(data);
console.log(">>Selection",data.text, data.idx, idx);
data.idx = idx;
$(container).css("background-color", colors[data.idx]);
return data.text;
},
}).val(checkList).trigger("change");
$("#myList").on("select2:select", function (evt) {
var element = evt.params.data.element;
var $element = $(element);
$element.detach();
$(this).append($element);
$(this).trigger("change");
});
})