使用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();

  

posted @ 2021-08-24 22:06  锋言锋语  阅读(738)  评论(0)    收藏  举报