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

看上去没怎么难吧,其实就是强化JQ,免得太久没用,生疏了。好了。附上我的代码:

  1. (function($){
  2.  
  3. var option={
  4. isEdit:false, //是否可以编辑:默认是否
  5. Listheight:200, //下拉框高度
  6. ListWidth:0, //下拉框长度
  7. //数据源
  8. data:[
  9. {"value":1,"text":"选择1"},
  10. {"value":2,"text":"选择2"},
  11. {"value":3,"text":"选择3"},
  12. {"value":4,"text":"选择4"}
  13. ]
  14. }
  15. //开始创建下拉框
  16. function Start(obj)
  17. {
  18. if(!option.isEdit)
  19. {
  20. obj.attr({"readonly":"readonly"});
  21. }
  22. var myList=$("<div></div>");
  23. var ul=$("<ul></ul>");
  24. ul.css({"list-style":"none","margin":"0px","padding":"2px"});
  25. myList.css({"border":"1px solid #D9E5F3","position":"absolute","overflow-y":"scroll","background-color":"#fff","font-size":"12px"});
  26. if(option.Listheight<=0)
  27. {
  28. option.Listheight=200;
  29. }
  30. myList.height(option.Listheight);
  31. if(option.ListWidth<=0)
  32. {
  33. option.ListWidth=obj.width()
  34. }
  35. myList.width(option.ListWidth);
  36. //默认位置是在创建元素的下方
  37. myList.offset({"top":obj.offset().top+obj.outerHeight(),"left":obj.offset().left});
  38. var data=option.data;
  39.  
  40. if(data.length>0)
  41. {
  42. for(i=0;i<data.length;i++)
  43. {
  44. var li=$("<li/>");
  45. var ListSon=$("<input type='checkbox' />");
  46. ListSon.change(function(){
  47. if(this.checked)
  48. {
  49. obj.val(obj.val()+$(this).val());
  50. }
  51. else
  52. {
  53. obj.val(obj.val().replace($(this).val(),""));
  54. }
  55. })
  56. myList.mouseover(function(){
  57. myList.show();
  58. })
  59. myList.mouseout(function(){
  60. myList.hide();
  61. })
  62. var span=$("<span></span>");
  63. span.text(data[i].text);
  64. ListSon.val(data[i].value+";");
  65. li.append(ListSon);
  66. li.append(span);
  67. ul.append(li);
  68. }
  69. }
  70. myList.append(ul);
  71. myList.appendTo("body");
  72. myList.hide();
  73.  
  74. FoucsShow($(obj),myList);
  75. }
  76. // 当获取到焦点使出现该下拉框
  77. function FoucsShow(obj,myList)
  78. {
  79. obj.focus(function(){myList.show()})
  80. }
  81. $.fn.createList=function(newoption)
  82. {
  83. $.extend(option,newoption);
  84. Start($(this));
  85.  
  86. }
  87. })(jQuery);

前台调用:

  1. $("#d2").createList({
  2. //数据源
  3. data:[
  4. {"value":"C#","text":"C#"},
  5. {"value":".NET","text":".NET"},
  6. {"value":"Java","text":"Java"},
  7. {"value":"JSP","text":"JSP"},
  8. {"value":"C","text":"C"},
  9. {"value":"C++","text":"C++"},
  10. {"value":"javascript","text":"javascript"},
  11. {"value":"ajax","text":"ajax"},
  12. {"value":"json","text":"json"},
  13. {"value":"xml","text":"xml"},
  14. {"value":"sql server","text":"sql server"},
  15. {"value":"xml","text":"Mysql"},
  16. {"value":"oracle","text":"oracle"},
  17. {"value":"JQuery","text":"JQuery"},
  18. {"value":"Ext js","text":"Ext js"},
  19. {"value":"CSS3","text":"CSS3"},
  20. {"value":"HTML5","text":"HTML5"}
  21. ]
  22. });
  23. $("#d3").createList();
  24. })

和大家分享一下,也喜欢有好的建议和方法能提供学习。

JQ自定义下拉列表插件的更多相关文章

  1. js/jq基础(日常整理记录)-4-一个简单的自定义tree插件

    一.一个简单的自定义tree插件 上一篇是之前自定义的table插件,这一篇也是之前同期尝试做的一个tree插件. 话不多说,先看看长什么样子哈! 现在来看确实不好看,以后在优化吧! 数据源:ajax ...

  2. Select-or-Die:灵活的 jQuery 下拉列表插件

    Select-or-Die 是一个 jQuery 插件,用来自定义下拉列表(Select)元素.原生的下拉选择元素在各个浏览器的默认样式差异很多,而且自定义样式很困难,因此 Web 开发人员喜欢使用插 ...

  3. select 自定义样式插件 selectize.js

    [特别推荐]几款极好的 JavaScript 下拉列表插件   表单元素让人爱恨交加.作为网页最重要的组成部分,表单几乎无处不在,从简单的邮件订阅.登陆注册到复杂的需要多页填写的信息提交功能,表单都让 ...

  4. 炫酷JQUERY自定义对话框插件JDIALOG_JDIALOG弹出对话框和确认对话框插件

    多种类型自定义对话框插件jDialog是一款基于jquery实现的轻量级多种类型的自定义对话框插件 在项目开发中.一般会美化 alert(); 的样式.那么今天我就和大家分享一款非常炫的插件 先来看一 ...

  5. 自定义jQuery插件Step by Step

    1.1.1 摘要 随着前端和后端技术的分离,各大互联网公司对于 Mobile First理念都是趋之若鹜的,为了解决网页在不同移动设备上的显示效果,其中一个解决方案就是Responsive Desig ...

  6. 使用自定义 jQuery 插件的一个选项卡Demo

    前几天闲着没事,想着编写一个 jQuery 插件,或许这将是一个美好的开始. 这里是html页面: <!DOCTYPE html> <html lang="en" ...

  7. 如何创建一个自定义jQuery插件

    简介 jQuery 库是专为加快 JavaScript 开发速度而设计的.通过简化编写 JavaScript 的方式,减少代码量.使用 jQuery 库时,您可能会发现您经常为一些常用函数重写相同的代 ...

  8. jq.paginator分页插件稍加修改

    样式一: 样式二: 此分页功能在jq.paginator分页插件上稍加修改. 必加模板html: <div id="jqPaginator"> <div id=& ...

  9. 自定义 Cordova插件(基础篇)

    cordova自定义插件 注意:存放自定义cordova插件目录不能有空格可能会报错 cordova的安装 下载node.js,安装完成后你可以在命令行中使用node和npm. 安装cordova使用 ...

随机推荐

  1. Linux 查看网卡流量【转】

        我的系统式RHEL5.   在linux下,查看网卡流量的方法有很多.下面先记录几个,和他们的大概用法.已被以后之需.   一:iptraf   一个很不错的工具.RHEL5 iso自带有,我 ...

  2. 解决word2016鼠标每点击一下就出现一个保存的圆圈

    问题描述:今天打开word2016时,点击鼠标,随着鼠标会出现一个圆圈,让人看着很不习惯,通过查阅资料和亲自实践,记录在博客中. 由于自己之前装了PowerDesigner,PowerDesigner ...

  3. tftp 开发板ping不通PC机

    开发板:JZ2440(天下2440开发板是一家) 当进入uboot界面时:输入命令print则显示: 将PC端的IP设置为192.168.1.11 在开发板上ping   192.168.1.11,若 ...

  4. redis aof文件过大问题

    http://www.itnose.net/detail/6682725.html 最近新安装了一台redis,版本为redis-3.2.5 数据盘用的是固态硬盘. 之前用的是普通硬盘,redis日志 ...

  5. HDU 2066 一个人的旅行(dijkstra水题+判重边)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 题目大意:输入数据有多组,每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有 ...

  6. java.lang.reflect.UndeclaredThrowableExceptionjiang

    实例包含由调用处理程序抛出的经过检查的未声明异常,可以使用 getUndeclaredThrowable() 方法获取 String msg = null; if (e instanceof Unde ...

  7. day2 字典常用的方法

        字典创建的方式: (1)d1 = {"k1":"v1","k2":"v2","k3":&qu ...

  8. IF....Else循环

    在Python中最简单的循环,if......else...... if语句是判断条件是否满足条件的,如果满足条件则执行if后面的语句:否则执行else的语句. #用户输入性别,进行判断sex = i ...

  9. 在ubuntu下安装kaldi基本步骤

    注:最近在学习kaldi语音识别工具,在安装过程中遇到了许多问题,在此记录,以备后需. 在一开始,我看了这篇博客(http://blog.topspeedsnail.com/archives/1001 ...

  10. 解决xshell4中文乱码

    前言 在公司看到别人使用xshell后,由于之前一直使用SecureCRT所以心里一直痒痒的想换下xshell试下.于是在昨天晚上使用xshell,却被中文乱码折腾了很长时间以至于想放弃,最终灵光一现 ...