使用jquery改变select的样式。
相信select大家都不会陌生,它的使用频率无论是服务端开发者还是前端开发人员都非常高,那么html默认自带的select我们大家都知道option是不能自己更改样式的,这篇文章就是告诉你怎么更改select的样式。
其实严格意义上来说不是更改,而是利用jquery脚本语言重新模拟一个出来,使得模拟出来的效果跟select是一样的,而且样式可以随意定制。
废话不多说,先上代码吧。
<select name="select" class="select" id="select"> <option value="1">选项1</option> <option value="2" selected="selected>选项2</option> <option value="3">选项3 </option> </select>
首先我们需要一个这样的html构造代码环境,这肯定是必须的,当然你也可以按照你的方式自己去写!
1 $.fn.select = function() { 2 this.each(function(){ 3 var self = $(this); 4 var warp = $('<div>', {class: 'brief-select-page'}); 5 var span = $('<span>', {class: 'current'}); 6 var ul = $('<ul>', {class: 'list'}); 7 $(this).find('option').each(function(){ 8 var li = $('<li>', {class: 'option', text: $(this).text(), value: $(this).val()}); 9 if ($(this).is(':selected')) { 10 span.text($(this).text()); 11 li.addClass('active'); 12 } 13 ul.append(li); 14 }); 15 16 warp.click(function(e) { 17 var open = $(this).hasClass('open'); 18 if (open == false) { 19 ul.show(); 20 $(this).addClass('open'); 21 }else{ 22 ul.hide(); 23 $(this).removeClass('open'); 24 } 25 $(document).click(function() { 26 ul.hide(); 27 warp.removeClass('open'); 28 }); 29 e.stopPropagation(); 30 }); 31 32 ul.find('li').click(function(){ 33 var text = $(this).text(); 34 ul.find('li').removeClass("active"); 35 $(this).addClass('active'); 36 span.text(text); 37 self.find('option').removeAttr('selected'); 38 self.find('option').each(function() { 39 if ($(this).text() == text){ 40 $(this).attr('selected', 'selected'); 41 } 42 }) 43 }); 44 warp.append(span); 45 warp.append(ul); 46 $(this).after(warp); 47 $(this).hide(); 48 }); 49 }
把这段代码放到你的js文件中去,然后在$(document).ready(function() { - 代码- })
标注着- 代码- 这个位置,把尖括号的额外信息删除掉,添加以下代码就可以了!
$('.select').select();

浙公网安备 33010602011771号