JQ自定义下拉列表插件
自从上次做了JQ自定义分页插件和表格插件后,就没在自定义过插件了,这一个月都在用linq和ef,基本前端都没怎么去碰了,今天有个同事说有个项目需要在下拉框里面带有复选框,本来想网上找下插件的,一想,其实这功能也并不难,于是就自己做了一个,也趁机再次熟悉下JQ自定义插件吧,好了,先附上效果图先:
看上去没怎么难吧,其实就是强化JQ,免得太久没用,生疏了。好了。附上我的代码:
(function($){ var option={ isEdit:false, //是否可以编辑:默认是否 Listheight:200, //下拉框高度 ListWidth:0, //下拉框长度 //数据源 data:[ {"value":1,"text":"选择1"}, {"value":2,"text":"选择2"}, {"value":3,"text":"选择3"}, {"value":4,"text":"选择4"} ] } //开始创建下拉框 function Start(obj) { if(!option.isEdit) { obj.attr({"readonly":"readonly"}); } var myList=$("<div></div>"); var ul=$("<ul></ul>"); ul.css({"list-style":"none","margin":"0px","padding":"2px"}); myList.css({"border":"1px solid #D9E5F3","position":"absolute","overflow-y":"scroll","background-color":"#fff","font-size":"12px"}); if(option.Listheight<=0) { option.Listheight=200; } myList.height(option.Listheight); if(option.ListWidth<=0) { option.ListWidth=obj.width() } myList.width(option.ListWidth); //默认位置是在创建元素的下方 myList.offset({"top":obj.offset().top+obj.outerHeight(),"left":obj.offset().left}); var data=option.data; if(data.length>0) { for(i=0;i<data.length;i++) { var li=$("<li/>"); var ListSon=$("<input type='checkbox' />"); ListSon.change(function(){ if(this.checked) { obj.val(obj.val()+$(this).val()); } else { obj.val(obj.val().replace($(this).val(),"")); } }) myList.mouseover(function(){ myList.show(); }) myList.mouseout(function(){ myList.hide(); }) var span=$("<span></span>"); span.text(data[i].text); ListSon.val(data[i].value+";"); li.append(ListSon); li.append(span); ul.append(li); } } myList.append(ul); myList.appendTo("body"); myList.hide(); FoucsShow($(obj),myList); } // 当获取到焦点使出现该下拉框 function FoucsShow(obj,myList) { obj.focus(function(){myList.show()}) } $.fn.createList=function(newoption) { $.extend(option,newoption); Start($(this)); } })(jQuery);
前台调用:
$("#d2").createList({ //数据源 data:[ {"value":"C#","text":"C#"}, {"value":".NET","text":".NET"}, {"value":"Java","text":"Java"}, {"value":"JSP","text":"JSP"}, {"value":"C","text":"C"}, {"value":"C++","text":"C++"}, {"value":"javascript","text":"javascript"}, {"value":"ajax","text":"ajax"}, {"value":"json","text":"json"}, {"value":"xml","text":"xml"}, {"value":"sql server","text":"sql server"}, {"value":"xml","text":"Mysql"}, {"value":"oracle","text":"oracle"}, {"value":"JQuery","text":"JQuery"}, {"value":"Ext js","text":"Ext js"}, {"value":"CSS3","text":"CSS3"}, {"value":"HTML5","text":"HTML5"} ] }); $("#d3").createList(); })
和大家分享一下,也喜欢有好的建议和方法能提供学习。
如果你觉得本文对你有帮助,可以在右边随意 打赏 博主 ~\(≧▽≦)/~
喜欢的朋友,下面点个关注,点个赞,O(∩_∩)O哈哈~~~~
作者:最爱晴天出处:http://www.cnblogs.com/qtqq/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追 究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?