Znalazłem taki skrypt dzięki któremu mogę ostylować pole select:
(function(jQuery){ jQuery.fn.extend({ customStyle : function(options) { if(!jQuery.browser.msie || (jQuery.browser.msie&&jQuery.browser.version>6)){ return this.each(function() { var currentSelected = jQuery(this).find(':selected'); jQuery(this).after('<span class="customStyleSelectBox"><span class="customStyleSelectBoxInner">'+currentSelected.text()+'</span></span>').css({position:'absolute', opacity:0,fontSize:jQuery(this).next().css('font-size')}); var selectBoxSpan = jQuery(this).next(); var selectBoxWidth = parseInt(jQuery(this).width()) - parseInt(selectBoxSpan.css('padding-left')) -parseInt(selectBoxSpan.css('padding-right')); var selectBoxSpanInner = selectBoxSpan.find(':first-child'); selectBoxSpan.css({display:'inline-block'}); selectBoxSpanInner.css({width:selectBoxWidth, display:'inline-block'}); var selectBoxHeight = parseInt(selectBoxSpan.height()) + parseInt(selectBoxSpan.css('padding-top')) + parseInt(selectBoxSpan.css('padding-bottom')); jQuery(this).height(selectBoxHeight).change(function(){ // selectBoxSpanInner.text(jQuery(this).val()).parent().addClass('changed'); This was not ideal selectBoxSpanInner.text(jQuery(this).find(':selected').text()).parent().addClass('changed'); // Thanks to Juarez Filho & PaddyMurphy }); }); } } }); })(jQuery); jQuery(function(){ jQuery('select#activity-filter-by').customStyle(); });
Problem jest taki że gdy zaznaczę jakieś pole np. Topics i przeładuję stronę to pole select pokazuje "Everything" a pod spodem są wyświetlane Topics
Tutaj można zobaczyć demo bez użycia skrypty powyżej - buddyboss.com/demo/activity/
Nie wiem skąd przeglądarka bierze informację że przed przeładowaniem strony zaznaczone było pole Topics
Problem w tym że jquery zwraca błędny:
jQuery(this).find(':selected');