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 相关文章推荐
由浅到深了解JavaScript类
Sep 08 Javascript
jquery如何根据值设置默认的选中项
Mar 17 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
Mar 04 Javascript
JavaScript实战之带收放动画效果的导航菜单
Aug 16 Javascript
原生js封装的一些jquery方法(详解)
Sep 20 Javascript
JS基于面向对象实现的多个倒计时器功能示例
Feb 28 Javascript
详解基于vue的服务端渲染框架NUXT
Jun 20 Javascript
Vue 子组件与数据传递问题及注意事项
Jul 11 Javascript
详解Vue中CSS样式穿透问题
Sep 12 Javascript
Vue 实现把表单form数据 转化成json格式的数据
Oct 29 Javascript
VUE+elementui面包屑实现动态路由详解
Nov 04 Javascript
vue实现折线图 可按时间查询
Aug 21 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
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
php中文字母数字验证码实现代码
2008/04/25 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
点击广告后才能获得下载地址
2006/10/26 Javascript
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
javascript级联下拉列表实例代码(自写)
2013/05/10 Javascript
node.js中使用node-schedule实现定时任务实例
2014/06/03 Javascript
详解AngularJS控制器的使用
2016/03/09 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
xmlplus组件设计系列之按钮(2)
2017/04/26 Javascript
Node.js 基础教程之全局对象
2017/08/06 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
在Vue中获取组件声明时的name属性方法
2018/09/12 Javascript
解决JS表单验证只有第一个IF起作用的问题
2018/12/04 Javascript
jquery实现手风琴案例
2020/05/04 jQuery
Antd-vue Table组件添加Click事件,实现点击某行数据教程
2020/11/17 Javascript
python网络编程实例简析
2014/09/26 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
mac下pycharm设置python版本的图文教程
2018/06/13 Python
Selenium鼠标与键盘事件常用操作方法示例
2018/08/13 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
使用python进行广告点击率的预测的实现
2019/07/04 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
2020/05/27 Python
linux面试题参考答案(2)
2015/12/06 面试题
面试后的英文感谢信
2014/02/01 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
超市周年庆活动方案
2014/08/16 职场文书
教师节老师寄语
2015/05/28 职场文书
2016元旦晚会主持人开场白和结束语
2015/12/03 职场文书
总结Pyinstaller打包的高级用法
2021/06/28 Python