jquery自定义下拉列表示例


Posted in Javascript onApril 25, 2014

自从上次做了JQ自定义分页插件和表格插件后,就没在自定义过插件了,这一个月都在用linq和ef,基本前端都没怎么去碰了,今天有个同事说有个项目需要在下拉框里面带有复选框,本来想网上找下插件的,一想,其实这功能也并不难,于是就自己做了一个,也趁机再次熟悉下JQ自定义插件吧,好了,先附上效果图先:

jquery自定义下拉列表示例

看上去没怎么难吧,其实就是强化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();    
               })
Javascript 相关文章推荐
jQuery select控制插件
Aug 17 Javascript
jQuery源码分析之jQuery中的循环技巧详解
Sep 06 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
Jun 03 Javascript
JS原生轮播图的简单实现(推荐)
Jul 22 Javascript
vue中页面跳转拦截器的实现方法
Aug 23 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
Feb 05 Javascript
详解Vue打包优化之code spliting
Apr 09 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
Aug 14 Javascript
vue-cli随机生成port源码的方法
Sep 02 Javascript
VUE实现密码验证与提示功能
Oct 18 Javascript
JavaScript的console命令使用实例
Dec 03 Javascript
vue动态合并单元格并添加小计合计功能示例
Nov 26 Vue.js
jquery常用特效方法使用示例
Apr 25 #Javascript
javascript实现存储hmtl字符串示例
Apr 25 #Javascript
javascript作用域和闭包使用详解
Apr 25 #Javascript
jQuery选择器简明总结(含用法实例,一目了然)
Apr 25 #Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
Apr 25 #Javascript
js动态移动滚动条至底部示例代码
Apr 24 #Javascript
javaScript如何处理从java后台返回的list
Apr 24 #Javascript
You might like
php二分法在IP地址查询中的应用
2008/08/12 PHP
php设计模式 Chain Of Responsibility (职责链模式)
2011/06/26 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
php利用新浪接口查询ip获取地理位置示例
2014/01/20 PHP
php以post形式发送xml的方法
2014/11/04 PHP
PHP中使用curl入门教程
2015/07/02 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
JavaScript中合并数组的N种方法
2014/09/16 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
jQuery EasyUI开发技巧总结
2017/09/26 jQuery
react 应用多入口配置及实践总结
2018/10/17 Javascript
Vue事件修饰符native、self示例详解
2019/07/09 Javascript
vue视频播放插件vue-video-player的具体使用方法
2019/11/08 Javascript
[02:41]2015国际邀请赛中国区预选赛观战指南
2015/05/20 DOTA
python 布尔操作实现代码
2013/03/23 Python
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
Python创建模块及模块导入的方法
2015/05/27 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
2019/03/29 Python
python实现最小二乘法线性拟合
2019/07/19 Python
Python如何在bool函数中取值
2020/09/21 Python
python中time tzset()函数实例用法
2021/02/18 Python
为什么group by 和order by会使查询变慢
2014/05/16 面试题
linux面试题参考答案(2)
2015/12/06 面试题
测绘工程专业个人自我评价
2013/12/01 职场文书
人事专员岗位职责范本
2014/03/04 职场文书
孙振耀退休感言
2015/08/01 职场文书
Python 如何解决稀疏矩阵运算
2021/05/26 Python
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL
Web应用开发TypeScript使用详解
2022/05/25 Javascript
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技