forked from adamcoulombe/jquery.customSelect
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcustomSelect.jquery.js
49 lines (43 loc) · 1.98 KB
/
customSelect.jquery.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*! jQuery.customSelect() - v0.2.1 - 2012-12-17 */
(function($){
$.fn.extend({
customSelect : function(options) {
if(typeof document.body.style.maxHeight != "undefined"){ /* filter out <= IE6 */
var defaults = {
customClass: null,
mapClass:true,
mapStyle:true
};
var options = $.extend(defaults, options);
return this.each(function() {
var $this = $(this);
var customSelectInnerSpan = $('<span class="customSelectInner" />');
var customSelectSpan = $('<span class="customSelect" />').append(customSelectInnerSpan);
$this.after(customSelectSpan);
if(options.customClass) { customSelectSpan.addClass(options.customClass); }
if(options.mapClass) { customSelectSpan.addClass($this.attr('class')); }
if(options.mapStyle) { customSelectSpan.attr('style', $this.attr('style')); }
$this.bind('update',function(){
$this.change();
var selectBoxWidth = parseInt($this.outerWidth()) - (parseInt(customSelectSpan.outerWidth()) - parseInt(customSelectSpan.width()) );
customSelectSpan.css({display:'inline-block'});
customSelectInnerSpan.css({width:selectBoxWidth, display:'inline-block'});
var selectBoxHeight = customSelectSpan.outerHeight();
$this.css({'-webkit-appearance':'menulist-button',width:customSelectSpan.outerWidth(),position:'absolute', opacity:0,height:selectBoxHeight,fontSize:customSelectSpan.css('font-size')});
}).change(function(){
var currentSelected = $this.find(':selected');
var html = currentSelected.html() || ' ';
customSelectInnerSpan.html(html).parent().addClass('customSelectChanged');
setTimeout(function(){customSelectSpan.removeClass('customSelectOpen');},60);
}).bind('mousedown',function(){
customSelectSpan.toggleClass('customSelectOpen');
}).focus(function(){
customSelectSpan.addClass('customSelectFocus');
}).blur(function(){
customSelectSpan.removeClass('customSelectFocus customSelectOpen');
}).trigger('update');
});
}
}
});
})(jQuery);