select2
by Sagar Bendale
HTML
<link rel="stylesheet" href="https://select2.github.io/select2/select2-3.5.2/select2.css">
<script src="https://select2.github.io/select2/select2-3.5.2/select2.js"></script>
<p>
<select style="width:300px" id="select">
<optgroup label="Alaskan/Hawaiian Time Zone">
<option value="AK">Alaska</option>
<option value="HI">Hawaii</option>
</optgroup>
<optgroup label="Pacific Time Zone">
<option value="CA">California</option>
<option value="NV">Nevada</option>
<option value="OR">Oregon</option>
<option value="WA">Washington</option>
</optgroup>
<optgroup label="Mountain Time Zone">
<option value="AZ">Arizona</option>
<option value="CO">Colorado</option>
<option value="ID">Idaho</option>
<option value="MT">Montana</option><option value="NE">Nebraska</option>
<option value="NM">New Mexico</option>
<option value="ND">North Dakota</option>
<option value="UT">Utah</option>
<option value="WY">Wyoming</option>
</optgroup>
<optgroup label="Central Time Zone">
<option value="AL">Alabama</option>
<option value="AR">Arkansas</option>
<option value="IL">Illinois</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="OK">Oklahoma</option>
<option value="SD">South...
CSS
body {
font-family: sans-serif;
}
ul {
padding: 0;
}
.info {
color: #00f;
font-weight: bold;
font-size: 10px;
float: right;
position: relative;
z-index: 1;
}
.info:hover {
text-decoration: underline;
}
JavaScript
function format(state) {
if (!state.id) return state.text; // optgroup
return state.text + " <i class='info'>link</i>";
}
var select2 = $("#select").select2({
formatResult: format,
formatSelection: format,
escapeMarkup: function(m) { return m; }
}).data('select2');
select2.onSelect = (function(fn) {
return function(data, options) {
var target;
if (options != null) {
target = $(options.target);
}
if (target && target.hasClass('info')) {
alert('click!');
} else {
return fn.apply(this, arguments);
}
}
})(select2.onSelect);