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问题整理
Aug 16 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
Nov 28 Javascript
javascript中attribute和property的区别详解
Jun 05 Javascript
jquery实现动态画圆
Dec 04 Javascript
JS操作HTML自定义属性的方法
Feb 10 Javascript
使用jQuery+EasyUI实现CheckBoxTree的级联选中特效
Dec 06 Javascript
很棒的js Tab选项卡切换效果
Aug 30 Javascript
jQuery图片拖动组件Dropzone用法示例
Jan 17 Javascript
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
Oct 21 Javascript
vue 将页面公用的头部组件化的方法
Dec 18 Javascript
zepto.js 实时监听输入框的方法
Dec 04 Javascript
JS apply用法总结和使用场景实例分析
Mar 14 Javascript
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 Smarty date_format [格式化时间日期]
2010/03/15 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
2015/09/24 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
js实现上一页下一页的效果【附代码】
2016/03/10 Javascript
javascript实现延时显示提示框特效代码
2016/04/27 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
2016/09/14 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
[01:09]DOTAPLUS——DOTA2的新时代
2018/04/04 DOTA
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
python中字符串数组逆序排列方法总结
2019/06/23 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
2019/08/22 Python
Python scrapy增量爬取实例及实现过程解析
2019/12/24 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
pandas分批读取大数据集教程
2020/06/06 Python
如何通过python计算圆周率PI
2020/11/11 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
中国最大的团购网站:聚划算
2016/09/21 全球购物
南京某公司笔试题
2013/01/27 面试题
养殖人员的创业计划书范文
2013/12/26 职场文书
机关门卫制度
2014/02/01 职场文书
趣味体育活动方案
2014/02/08 职场文书
雷人标语集锦
2014/06/19 职场文书
国际商务专业求职信
2014/07/15 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
投标承诺函格式
2015/01/21 职场文书
检讨书范文大全
2015/05/07 职场文书
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android
Nginx虚拟主机的搭建的实现步骤
2022/01/18 Servers
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers
V Rising 服务器搭建图文教程
2022/06/16 Servers