Custom DropDown
Replacing SELECTBOX and OPTIONS with UL and LIs.
HTML
<select name="abc">
<option value="1">first</option>
<option value="2">second</option>
<option value="3">third</option>
</select>
<script>
</script>
CSS
.clearfix:after {
visibility: hidden;
display: block;
font-size: 0;
content:" ";
clear: both;
height: 0;
}
.clearfix {
display: inline-block;
}
/* start commented backslash hack \*/
* html .clearfix {
height: 1%;
}
.clearfix {
display: block;
}
/* close commented backslash hack */
#wrapper {
width: 300px;
margin: 0 auto;
}
.custom-select {
position: relative;
}
.custom-select .input-dummy {
background: none;
border: 0;
cursor: pointer;
padding: 10px;
background: #ddd;
}
.custom-select ul {
background: #666;
list-style: none;
padding: 0;
display: none;
position: absolute;
top: 20px;
}
.custom-select li {
list-style: none;
background: #eee;
margin-top: 1px;
cursor: pointer;
text-align: center;
}
.custom-select li.active {
background: #000;
color: #fff;
}
.custom-select .value-holder {
display: block;
background: #ddd;
}
.custom-select .value-holder span {
width: 0;
height: 0;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-top: 10px solid #fff;
position: absolute;
right: 10px;
top: 35%;
cursor: pointer;
}
JavaScript
(function ($) {
$.fn.customSelect = function (options) {
var settings = $.extend({
//mainWidth: '200',
selected: '0',
alignRight: 'false',
}, options);
return this.each(function () {
var el = $(this);
var name = el.prop('name');
var optionTag = el.children();
var wrapperDIV = $('<div class="customSelect"/>');
var newDIV = $('<div class="custom-select"/>');
var inputTag = $("<input name='" + name + "' type='text' readonly='readonly' />").hide();
var inputDummy = $("<div class='input-dummy'/>");
var valueHolder = $('<div class="value-holder clearfix"/>');
var ULTag = $('<ul class="clearfix"/>');
var spanTag = '<span/>'
el.wrap(wrapperDIV);
el.parent().append(newDIV);
newDIV.append(valueHolder);
valueHolder.append(spanTag);
valueHolder.append(inputTag);
valueHolder.append(inputDummy);
newDIV.append(ULTag);
optionTag.each(function () {
ULTag.append("<li data-selected='" + $(this).val() + "'>" + $(this).text() + "</li>");
}).end().remove();
var valDefault = $(optionTag).eq(settings.selected - 1).val();
var textDefault = $(optionTag).eq(settings.selected - 1).text();
console.log(valDefault, settings.selected, textDefault);
console.log($('li').eq(settings.selected - 1));
$(inputTag).val(valDefault);
$(inputDummy).text(textDefault);
valueHolder.click(function () {
$(this).next().toggle();
});
ULTag.each(function () {
$('li', this).click(function () {
$(this).each(function () {
$(this).addClass('active').siblings().removeClass('active');
var x =...