Html jquery下拉select美化插件——selectFilter.js
1. Html jquery下拉select美化插件——selectFilter.js
jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画以及Ajax交互,使得开发者能更高效地构建交互式网页。在本案例中,jquery.selectlist.js插件正是基于jQuery构建的,旨在提供一种优雅的方式来增强下拉框的视觉效果。

在网页设计中,下拉选择框是常见的用户交互元素,但其默认样式往往较为单调,不能满足现代网页的美观需求。为了解决这个问题,开发者们创建了各种各样的下拉选择框美化插件,其中selectFilter.js便是其中之一。这个插件不仅能够美化下拉选择框,还支持常用的事件处理,提升了用户体验。
下拉框(Select List)作为常见的交互元素,其外观和用户体验往往直接影响到网站的整体质感。然而,HTML原生的下拉框样式较为单一,难以满足现代网页设计的需求。为此,开发者们通常会借助于jQuery等JavaScript库来实现下拉框的美化和功能增强。本篇将详细介绍一款名为“jquery.selectlist.js”的插件,该插件能够轻松地为下拉框添加各种美观的特效。插件的核心功能在于将传统的HTML <select> 元素转换为具有自定义样式的可交互控件。它提供了丰富的定制选项,包括但不限于字体、颜色、背景、边框等,使得下拉框不仅在视觉上更加吸引人,同时也能更好地融入到网页的整体设计中。
jquery.selectlist.js插件为开发者提供了一种简单且强大的方式来美化和优化网页中的下拉框元素。通过深入理解插件的工作原理和使用方法,我们可以将其灵活运用到实际项目中,提升网站的交互性和美观度。而对于有编程基础的开发者来说,进一步对插件源码进行二次开发,可以创造出更多个性化的下拉框特效,满足更复杂的需求。
1.1. 流程
在实际应用中,jquery.selectlist.js插件的使用流程通常是这样的:
(1)确保在页面中引入了jQuery库和jquery.selectlist.js插件文件。根据提供的压缩包文件名,我们可以看到有三个主要文件:index.html、css和js。其中,index.html是示例页面,css目录可能包含了插件的样式文件,而js目录则包含插件的JavaScript代码。
(2)在HTML中,我们需要一个或多个<select>元素,这些元素将会被插件转换。每个<select>元素可以包含多个<option>,用于展示不同的选择项。
(3)接着,在文档加载完成后,通过调用jQuery的选择器和插件方法,例如$('select').selectlist();,将选中的<select>元素应用插件效果。
(4)如果需要自定义样式或功能,可以通过插件提供的配置选项进行设置。比如,你可以改变默认的下拉箭头图标,调整选中项的高亮样式,甚至添加自定义事件处理函数。
(5) 为了实现更好的用户体验,jquery.selectlist.js插件可能还支持触屏设备的交互,使下拉框在手机或平板电脑上也能流畅操作。
1.2. 主要功能
(1) 样式美化:该插件能够将传统的HTML <select>元素转换为具有现代感和自定义样式的组件。它可以改变下拉箭头的样式,调整选项的文字颜色、背景色等,使得整体风格与网站设计更加协调。
(2) 过滤功能:selectFilter.js提供了搜索过滤功能,允许用户在下拉选项中输入关键词,快速定位到所需选项,大大提高了选择效率。
(3) 事件处理:插件支持多种事件,如change(选中项改变)、focus(获取焦点)、blur(失去焦点)等,开发者可以方便地绑定自定义函数,实现更丰富的交互逻辑。
(4) 可定制性:selectFilter.js允许开发者自定义多项设置,包括但不限于主题颜色、字体大小、搜索框样式等,以适应不同场景的需求。
在使用selectFilter.js时,我们通常会配合HTML、CSS和JavaScript来完成界面的构建。index.html是主页面文件,包含着<select>元素和其他相关HTML结构;js目录下的文件包含了插件的核心代码,一般会有一个selectFilter.js的主文件,以及可能的其他辅助脚本;css目录则存放了样式表,用于定义美化后的选择框样式;images目录可能包含箭头图标或其他必要的图像资源。
在实际应用中,我们首先需要在HTML中引入selectFilter.js和相关的CSS文件,然后对需要美化的<select>元素进行初始化。例如:
<link rel="stylesheet" href="css/selectFilter.css">
<script src="js/selectFilter.js"></script>
<script>
$(document).ready(function() {
$('#yourSelect').selectFilter();
});
</script>
这里,#yourSelect是你要操作的下拉选择框的ID。
此外,php中文网免费下载站.txt和php中文网下载站.url可能是提供插件下载和相关教程的链接资源,对于学习和使用selectFilter.js有一定的帮助。
selectFilter.js是一个强大的下拉选择框美化工具,它通过简洁的API和高度的可定制性,让开发者能够轻松地打造出美观且功能齐全的下拉选择框,提升网页的交互体验。在实际开发中,结合jQuery和其他前端技术,我们可以利用selectFilter.js创造出更多富有创新性的交互效果。
1.3. 用法
在的第一个设置值为空的就可以有空的值选择。
事件的话 :$(‘select’).val(‘’); - 直接设置为空

1.3.1. select
name 可以按收选择的值【用于表单提交名称自定义】
1.3.2. option
(1)value:传给后台的参数
(2)selected:设置默认选中
(3)disabled :设置禁止选则
<option value="2023">2023</option>
<option value="2022" selected="selected">2022</option>
<option value="2021" disabled="disabled">2021</option>
1.3.3. 赋值
$('#year_input_id').val("2023")var yearFilterId = $('#year_filter_id')var year1Html = `<option value="2023">2023</option>`yearFilterId.append(year1Html);var year2Html = `<option value="2022" selected="selected">2022</option>`yearFilterId.append(year2Html);var year3Html = `<option value="2021" disabled="disabled">2021</option>`yearFilterId.append(year3Html);$('#year_select_id').selectFilter({callBack: function (val) {$('#year_input_id').val(val)}});
1.3.4. 回调
//这里是初始化
$('.filter-box').selectFilter({
callBack : function (val){
//返回选择的值
console.log(val+'-是返回的值')
}
});
1.4. selectFilter源码
1.4.1. selectFilter.css
/*** selectFilter --v1.0***/
* {margin: 0;padding: 0;box-sizing: border-box;
}li {list-style: none;
}.filter-disabled {-moz-user-select: none;-webkit-user-select: none;-ms-user-select: none;
}.filter-black {width: 1.2rem;
}.filter-box {position: relative;padding-top: 0.08rem;
}.filter-box select {display: none;
}.filter-text {height: 0.6rem;overflow: hidden;cursor: pointer;border: 1px solid #e6e6e6;display: flex;flex-direction: row;justify-content: center;align-items: center;border-radius: 0.1rem;margin-top: 0.08rem;background-color: #efeff4;
}.filter-text .filter-title {min-width: 1.5rem;max-width: 1.65rem;border: 0;background-color: transparent;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;cursor: pointer;font-size: 0.26rem;margin-top: 0.2rem;text-align: center;
}.filter-list {display: none;width: 100%;max-height: 40vh;background-color: #fff;font-size: 14px;position: absolute;z-index: 99;border: 1px solid #e6e6e6;overflow: auto;
}.filter-list li.filter-null a {color: #d2d2d2;
}.filter-list li a {display: block;padding: 0 0.05rem;line-height: 0.8rem;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;cursor: pointer;font-size: 0.34rem;text-align: center;
}.filter-list li:hover {background-color: #f2f2f2;
}.filter-list li.filter-selected {background-color: #5FB878;
}.filter-list li.filter-selected a {display: block;color: #fff;
}.filter-list li.filter-disabled {background-color: #fff;
}.filter-list li.filter-disabled a {display: block;color: #d2d2d2;
}.filter-list li.filter-disabled:hover a {cursor: not-allowed !important;background-color: #fff;
}.icon-filter-arrow {width: 0.32rem;height: 0.32rem;margin-right: 0.2rem;background-repeat: no-repeat;background-image: url(../../img/icon/icon_arrow_down_x2.png);background-size: 100%;transition: all .2s;
}.filter-list::-webkit-scrollbar {width: 4px;height: 4px;
}.filter-list::-webkit-scrollbar-track {background: #fff
}.filter-list::-webkit-scrollbar-thumb {background: #CBCBCB;
}
1.4.2 .selectFilter.js
/*** options={* callBack : function (res){} // 返回选中的值 进行事件操作* }* 也可以放在表单直接获取 select标签的 值**/;jQuery.fn.selectFilter = function (options){var defaults = {callBack : function (res){}};var ops = $.extend({}, defaults, options);var selectList = $(this).find('select option');var that = this;var html = '';// 读取select 标签的值html += '<ul class="filter-list">';$(selectList).each(function (idx, item){var val = $(item).val();var valText = $(item).html();var selected = $(item).attr('selected');var disabled = $(item).attr('disabled');var isSelected = selected ? 'filter-selected' : '';var isDisabled = disabled ? 'filter-disabled' : '';if(selected) {html += '<li class="'+ isSelected +'" data-value="'+val+'"><a title="'+valText+'">'+valText+'</a></li>';//$(that).find('.filter-title').val(valText);}else if (disabled){html += '<li class="'+ isDisabled +'" data-value="'+val+'"><a>'+valText+'</a></li>';}else {html += '<li data-value="'+val+'"><a title="'+valText+'">'+valText+'</a></li>';};});html += '</ul>';$(that).append(html);$(that).find('select').hide();//点击选择$(that).on('click', '.filter-text', function (){$(that).find('.filter-list').slideToggle(100);$(that).find('.filter-list').toggleClass('filter-open');$(that).find('.icon-filter-arrow').toggleClass('filter-show');});//点击选择列表$(that).find('.filter-list li').not('.filter-disabled').on('click', function (){var val = $(this).data('value');var valText = $(this).find('a').html();//$(that).find('.filter-title').val(valText);$(that).find('.icon-filter-arrow').toggleClass('filter-show');$(this).addClass('filter-selected').siblings().removeClass('filter-selected');$(this).parent().slideToggle(50);for(var i=0; i<selectList.length; i++){var selectVal = selectList.eq(i).val();if(val == selectVal) {$(that).find('select').val(val);};};ops.callBack(val); //返回值});//其他元素被点击则收起选择$(document).on('mousedown', function(e){closeSelect(that, e);});$(document).on('touchstart', function(e){closeSelect(that, e);});function closeSelect(that, e) {var filter = $(that).find('.filter-list'),filterEl = $(that).find('.filter-list')[0];var filterBoxEl = $(that)[0];var target = e.target;if(filterEl !== target && !$.contains(filterEl, target)&& !$.contains(filterBoxEl, target)) {filter.slideUp(50);$(that).find('.filter-list').removeClass('filter-open');$(that).find('.icon-filter-arrow').removeClass('filter-show');};}
};
1.5. 示例代码
1.5.1. index.tml
<!doctype html>
<html>
<head><meta charset="utf-8"><title>下拉列表</title><meta name="viewport"content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/><script type="text/javascript" src="../static/js/init-rem.js"></script><link rel="stylesheet" type="text/css" href="../static/css/mui.min.css"/><script type="text/javascript" src="../static/js/mui.min.js"></script><link rel="stylesheet" type="text/css" href="../static/css/mui.loading.css"/><script type="text/javascript" src="../static/js/mui.loading.js"></script><script type="text/javascript" src="../static/js/my-mui-loading.js"></script><link rel="stylesheet" type="text/css" href="../static/css/mobileSelect.css"/><script type="text/javascript" src="../static/js/mobileSelect.min.js"></script><script type="text/javascript" src="../static/js/echarts.min.js"></script><link rel="stylesheet" type="text/css" href="../static/css/selectFilter.css"/><script type="text/javascript" src="../static/js/jquery-3.1.1.min.js"></script><script type="text/javascript" src="../static/js/selectFilter.js"></script><link rel="stylesheet" type="text/css" href="../static/css/base.css"/><script type="text/javascript" src="../static/helper/net-helper.js"></script><script type="text/javascript" src="../static/helper/init-helper.js"></script><script type="text/javascript" src="../static/constant/sp-constant.js"></script><script type="text/javascript" src="../static/js/vconsole.min.js"></script><script type="text/javascript">//var vc = new VConsole()</script>
</head>
<body>
<!--标题区域-->
<section class="base-title-layout"><div class="base-title-bar"><span class="base-title-back" onclick="history.go(-1)"><img src="../img/icon/icon_back.png"/></span><h1>下拉列表</h1><span class="base-title-back"></span></div>
</section>
<!--内容区域-->
<div class="base-page-layout"><div class="base-select-section"><div><div class="base-select-layout"><div id="year_select_id" class="filter-box"><div class="filter-text"><input id="year_input_id" class="filter-title"type="text" placeholder="年份" readonly/><i class="icon-filter-arrow"></i></div><select id="year_filter_id" name="month_filter_id"></select></div></div></div></div>
</div>
<script type="text/javascript" src="../js/page-select-filter.js"></script>
</body>
</html>
1.3.2. index.js
$(function () {//返回上一页面backPage()listener()initData()
})function initData() {}
function listener() {$('#year_input_id').val("2023")var yearFilterId = $('#year_filter_id')var year1Html = `<option value="2023">2023</option>`yearFilterId.append(year1Html);var year2Html = `<option value="2022" selected="selected">2022</option>`yearFilterId.append(year2Html);var year3Html = `<option value="2021" disabled="disabled">2021</option>`yearFilterId.append(year3Html);$('#year_select_id').selectFilter({callBack: function (val) {$('#year_input_id').val(val)}});
}相关文章:
Html jquery下拉select美化插件——selectFilter.js
1. Html jquery下拉select美化插件——selectFilter.js jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画以及Ajax交互,使得开发者能更高效地构建交互式网页。在本案例中,jquery.selectlist.js插件正是基于jQuery构建的&…...
使用ESP8266扫描WiFi列表
一、简介 准备用基于esp8266的nodemcu开发板做一个天气时钟。目前只实现了第一阶段任务的第一点要求。使用arduino编程,在基于esp8266的nodemcu开发板上实现开机自动连接wifi。 这里记录一下使用ESP8266扫描WiFi列表的方法。还需要研究怎么把列表显示在网页上&…...
Java对象访问机制:句柄访问与直接指针访问
在Java虚拟机(JVM)中,对象的访问方式是一个关键的设计选择,它影响着程序的性能和内存管理。JVM规范中只规定了对象引用(reference)必须指向对象,但并没有定义这个引用应该如何定位和访问堆中对象…...
基于SpringBoot实现QQ邮箱发送短信功能 | 免费短信服务
开发学习过程中有个短信发送功能,阿里云腾讯云等等都要money,听说qq邮箱可以实现免费发送邮箱的功能(短信发送的平替),就用这个来实现!!!【找了好多好多方法才成功的啊啊啊啊&#x…...
【MySQL】聚合函数、group by子句
目录 聚合函数 count([distinct] column) sum([distinct] column) avg([distinct] column) max([distinct] column) min([distinct] column) group by子句 1.如何显示每个部门的平均薪资和最高薪资 2.显示每个部门每种岗位的平均薪资和最低薪资 3.显示平均工资低于200…...
详细分析SpringMvc中HandlerInterceptor拦截器的基本知识(附Demo)
目录 前言1. 基本知识2. Demo3. 实战解析 前言 对于Java的基本知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRUD的功能整理(持续更新) 1. 基本知识 HandlerInter…...
阳光能源嵌入式面试及参考答案(2万字长文)
管道能够承载的最大传输数据量是多少? 在嵌入式系统中,管道能够承载的最大传输数据量取决于多个因素。 首先,管道的容量受到操作系统的限制。不同的操作系统对管道的大小有不同的规定。一般来说,管道的容量通常是有限的,并且在不同的操作系统版本和配置下可能会有所不同。…...
P10483 小猫爬山
1. #include<bits/stdc.h> using namespace std; //一个记录小猫的重量,sum记录当前小猫的重量之和 int n, w, a[3000],sum[3000],ans; bool cmp(int a,int b) {return a > b; } //x表示小猫当前的编号,cnt表示缆车的数量 void dfs(int x,int …...
技术速递|加入 .NET 智能组件生态系统
作者:Daniel Roth - 首席产品经理 排版:Alan Wang .NET 智能组件是一组示例嵌入式 UI 组件,使得在应用中轻松添加 AI 启用的功能变得更加简单,例如从剪贴板数据自动填写表单、智能文本补全以及语义搜索等场景。.NET 智能组件演示了…...
python/requests库的使用/爬虫基础工具/
requests 是一个 Python 库,它允许你发送 HTTP 请求。这个库需要单独安装,因为它不是 Python 标准库的一部分 1.让我们安装requests 在控制台运行 pip install requests 使用 requests 发送请求 1.GET 请求: import requestsresponse …...
【STM32-HAL库】MQ2烟雾传感器使用(STM32F407ZET6)
MQ2可燃气体传感器介绍 MQ2是一种广谱气体传感器,能够检测多种可燃气体和烟雾。它是一种低成本、高灵敏度的传感器,广泛应用于家庭和工业环境中的气体监测。 原理 MQ2传感器的工作原理基于金属氧化物半导体(MOX)技术。当传感器暴露…...
玩转指针(3)
一、字符指针变量 字符指针变量(如char* p)的两种赋值方式 ①将字符类型地址赋值给字符指针变量 int main() {char a w;char* p &a;*p m;return 0; }②将常量字符串赋值给字符指针变量 常量字符串的介绍:用" "引起来的就…...
【CSS in Depth 2 精译_040】6.3 CSS 定位技术之:相对定位(下)—— 用纯 CSS 绘制一个三角形
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结)第二章 相对单位(已完结)第三章 文档流与盒模型(已完结)第四章 Flexbox 布局(已…...
HTML流光爱心
文章目录 序号目录1HTML满屏跳动的爱心(可写字)2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐5HTML蓝色爱心射线6HTML跳动的爱心(简易版)7HTML粒子爱心8HTML蓝色动态爱心9HTML跳动的爱心(双心版)1…...
java技能
日志实际使用 log.error(“111”,e);和 System.out.println(ExceptionUtils.getStackTrace(error)); 日志查询 tail -f root.log 前端页面命名: mounted(){ document.title‘设备可视页面’ } 查看ips所属mac nbtstat -a 10.87.236.60 获取容器名称 hostName In…...
本省第一所!新大学,揭牌!
9月26日,海南艺术职业学院举行揭牌仪式,标志着海南省第一所公办艺术类高等职业院校正式揭牌成立。海南省旅文厅党组成员、副厅长刘成出席揭牌仪式,省教育厅党组成员、副厅长邢孔政在揭牌仪式上宣读省人民政府同意设立海南艺术职业学院的批复。…...
企业微信(企微)审批与影刀RPA结合
企业微信审批与影刀RPA结合 效果先看视频: 影刀与企业微信审批结合 具体步骤: 1、登录企微管理后台,新建一个审批流。 添加模板→自定义模板,根据需求添加审批节点。 添加完之后,回到审批界面,可以看…...
新手教学系列——用 VSCode 实现高效远程开发
随着软件开发环境日益复杂,远程开发已成为许多开发者的日常工作方式。尤其当项目需要直接在服务器上运行或本地计算资源有限时,能够使用一款便捷、强大的工具至关重要。在众多 IDE 中,VSCode 因其轻量、灵活且支持丰富插件,成为远程开发的理想选择。本文将详细介绍如何通过…...
[uni-app]小兔鲜-04推荐+分类+详情
热门推荐 新建热门推荐组件, 动态设置组件的标题 <template><!-- 推荐专区 --><view class"panel hot"><view class"item" v-for"item in list" :key"item.id">... ...<navigator hover-class"none&…...
PHP人才机遇桥梁招聘求职全能系统小程序源码
人才机遇桥梁 —— 招聘求职全能系统全解析 💼🚀 🌉 搭建人才与机遇的桥梁 在这个竞争激烈的职场环境中,找到一份心仪的工作或招募到合适的人才,往往不是一件容易的事。但幸运的是,我们有了“人才机遇桥梁…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
