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);