jquery打造自定义控件(原创)
本人第一次发表文章,不足之出请大家多多包涵
下面是一个combox的代码
/// <reference path="../Js/jquery-1.7.2.min.js" /> $.extend({ //下拉列表框 qyjcombox: function (select) { //这里是初始化 var htmlstr = "<div class=\"boxwrap\"><a class=\"select-tit\" href=\"javascript:;\"><span></span><i></i></a><div class=\"select-items\" style=\"z-index: 1; display: none;\"><ul><li> ├ 房产动态</li></ul></div><i class=\"arrow\" style=\"z-index: 1; display: none;\"></i></div>"; var cbjq = $(select); //在用户定义的节点中填充我们的combox cbjq.html(htmlstr); //并附上class cbjq.addClass("rule-single-select single-select"); //要复制多次的节点 var copeItem = $("li", select); //要添加到的父节点 var itemParant = copeItem.parent(); //要复制的节点获取到父节点后马上删除 copeItem.remove(); //下拉选中后显示值的节点 var showText=cbjq.find("span").first(); //这里是列表框的业务逻辑 //记录选项的数组 var list = []; var isShow = true; //注册文本框单击事件 $(".select-tit", select).click(HideOrShow); //显示或者隐藏 function HideOrShow() { if (isShow) { ShowList(); } else { hideList(); } } // title 和id 后面的是自定义属性 this.addItem = function (title, id, itemObj) { //复制节点 var newItem = copeItem.clone(); //给节点附名字 newItem.html(title); newItem.bind("click", clickEvent); itemParant.append(newItem); list.push({ title: title, id: id, itemObj: itemObj, dom: newItem }); } //显示下拉列表 function ShowList() { isShow = false; $(".select-items", select).css("display", "block"); $(".arrow", select).css("display", "block"); } //隐藏列表 function hideList() { isShow = true; $(".select-items", select).css("display", "none"); $(".arrow", select).css("display", "none"); } function clickEvent() { var node = $(this); showText.html(node.html()); hideList(); } //注册选项改变事件 this.itemChangeEvent = function (changFunc) { for (var i = 0; i < list.length; i++) { //利用函数变量的作用域和this关键字改变来用户调用方便 (function (item) { //现在这个item被这个匿名函数 独享了 随便你怎么玩 item.dom.bind("click",function (e) { //触发外部的函数 changFunc.apply(this, [{ title: item.title, id: item.id, itemObj: item.itemObj }, e]); }); })(list[i]); //下面是我之前 ie9留下的坏习惯 ie8 只能上面这种写法 //var item = list[i]; //item.dom.bind("click",function(){changFunc.apply(this,{title:item.title,id:item.id}) }); } } } });
接下来就是 取css的环节了
下面是css代码
/* CSS Document */ *{ margin:; padding:; list-style:none;font-family: "Microsoft YaHei";} table{ border-collapse:collapse; border-spacing:; } a{ color:#686f7f; text-decoration:none; } a:link, a:visited{ color:#2A72C5; text-decoration:none; } a:active, a:hover{ color:#0065D9; text-decoration:underline; } .clearer{ clear:both;} /* single-select */ .single-select{ position:relative; display:inline-block; margin-right:5px; vertical-align:middle; cursor:pointer; *float:left; } .single-select .boxwrap{ display:inline-block; vertical-align:middle; } .single-select .select-tit{ position:relative; display:block; padding:5px 38px 5px 10px; min-width:40px; line-height:20px; height:20px; border:solid 1px #eee; text-decoration:none; background:#fff; white-space:nowrap; word-break:break-all; } .single-select .select-tit span{ display:inline-block; color:#333; font-size:12px; vertical-align:middle; } .single-select .select-tit i{ position:absolute; right:; top:; display:block; width:28px; height:100%; border-left:1px solid #eee; background:url(images/skin_icons.png) 7px -189px no-repeat #fafafa; } .single-select .select-items{ display:none; position:absolute; left:; top:45px; /*overflow:hidden;*/ } .single-select .select-items ul{ position:relative; padding:5px; min-width:120px; max-height:280px; border:1px solid #eee; background:#fff; overflow-y:auto; overflow-x:hidden; } .single-select .select-items ul li{ display:block; padding:4px 10px; line-height:20px; font-size:12px; color:#666; white-space:nowrap; cursor:pointer; } .single-select .select-items ul li:hover{ color:#fff; text-decoration:none; background:#16a0d3; } .single-select .select-items ul li.selected{ color:#fff; background:#16a0d3; } .single-select .arrow{ display:none; position:absolute; left:15px; top:35px; width:21px; height:11px; text-indent:-9999px; background:url(images/skin_icons.png) 0 -290px no-repeat; } .single-select.up .select-items{ top:auto; bottom:45px; } .single-select.up .arrow{ top:-13px; background:url(../images/skin_icons.png) 0 -300px no-repeat; }
后来发现里面有图片
background:url(images/skin_icons.png) 改成当前路径就ok了
完工就可以测试了
测试html
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <link href="combox/combox.css" rel="stylesheet" /> <script src="Js/jquery-1.7.2.min.js"></script> <script src="combox/combox.js"></script> <script> $(window).ready(function () { var com = new $.qyjcombox("#cm"); com.addItem("测试1", 1); com.addItem("测试2", 2); com.addItem("测试3", 3); com.itemChangeEvent(function (data) { alert("你单击了:"+data.title+" id:"+data.id); }); }); </script> </head> <body> <div id="cm"></div> </body> </html>
效果图 环境 360浏览器 内核 ie7
控件下载地址 :http://pan.baidu.com/s/1c0cxQ28
工具下载地址:http://pan.baidu.com/s/1qWC7lRu
jquery打造自定义控件(原创)的更多相关文章
- jQuery打造智能提示插件二(可编辑下拉框)
在上一篇 jQuery打造智能提示插件 上改进,增加下拉按钮,修复点击下拉区域外不隐藏BUG 效果 下拉按钮素材: js封装,注意红色部分为BUG修复,然后传入boxwidth不带px: /* /// ...
- Jquery打造的类似新浪微博@提醒功能
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【jQuery Demo】jQuery打造动态下滑菜单
作者:漫凯维奇 来源:[教程]jQuery打造动态下滑菜单 Tip:这只是一个转载,源代码可以在上面的来源博文中下载 此教程将分步讲解如何使用JQuery和CSS打造一个炫酷动感菜单.效果如 ...
- jQuery打造用户注册时获取焦点文本框出现提示jquery表单特效
jQuery打造用户注册时获取焦点文本框出现提示效果的jquery表单特效 当获取焦点时,会分别的弹出相应的信息提示框,失去焦点就会隐藏提示信息. 效果兼容性很高,适用浏览器:IE6.IE7.IE8. ...
- 基于jQuery打造的选项卡向上弹出jquery焦点图切换特效
基于jQuery打造的选项卡向上弹出jquery焦点图切换特效 鼠标经过标题栏,会出现层特效向上滑动,并且在同时进行幻灯片切换,效果十分不错. 有兴趣的童鞋可以下载看看,在IE6方面兼容性也不错,只有 ...
- 一款jQuery打造的滚动条在底部滑出信息提示层
一款jQuery打造的滚动条在底部滑出信息提示层, 当滚动鼠标滚轮,或者滚动条往下拉的时候,在右下角,弹出一个信息提示框. 有一点仿的是一个插件工具,就是网页中大家都长用到的友荐. 这款特效算一款简单 ...
- 基于jquery打造的网页右侧自动收缩浮动在线客服代码
基于jquery打造的网页右侧自动收缩浮动在线QQ客服代码, 当前比较流行的一款QQ在线jquery特效代码, 代码中还带有IE6下PNG图片透明的特效,如果想研究IE6下PNG透明的同学也可以下载研 ...
- HTML5+CSS3+JQuery打造自定义视频播放器
来源:http://www.html5china.com/HTML5features/video/201109206_1994.html 简介HTML5的<video>标签已经被目前大多数 ...
- 使用CSS3+JQuery打造自定义视频播放器
简介 HTML5的<video>标签已经被目前大多数主流浏览器所支持,包括还未正式发布的IE9也声明将支持<video>标签,利用浏览器原生特性嵌入视频有很多好处,所以很多开发 ...
随机推荐
- CLR中的程序集加载
CLR中的程序集加载 本次来讨论一下基于.net平台的CLR中的程序集加载的机制: [注:由于.net已经开源,可利用vs2015查看c#源码的具体实现] 在运行时,JIT编译器利用程序集的TypeR ...
- 【JUC】JDK1.8源码分析之CopyOnWriteArrayList(六)
一.前言 由于Deque与Queue有很大的相似性,Deque为双端队列,队列头部和尾部都可以进行入队列和出队列的操作,所以不再介绍Deque,感兴趣的读者可以自行阅读源码,相信偶了Queue源码的分 ...
- react入门(4)
首先还是来回顾一下前三篇讲的内容 react入门(1): jsx,组件,css写法 react入门(2):事件,this.props.children,props,...other react入门(3 ...
- 7.3 数据注解特性之ConcurrencyCheck特性【Code-First系列】
ConcurrencyCheck特性可以应用到领域类的属性中.当EF执行更新操作的时候,Code-First将列的值放在where条件语句中,你可以使用这个CurrencyCheck特性,使用已经存在 ...
- 基于jQuery的自适应图片左右切换
效果预览:http://hovertree.com/code/jquery/smjv6d0n.htm 基于jQuery编写的横向自适应幻灯片切换特效 全屏自适应jquery焦点图切换特效,在IE6这个 ...
- Collection框架
Collection框架 集合框架(Collection Framework)泛指java.util包的若干个类和接口.如Collection,List,ArrayList,LinkedList,Ve ...
- div的显示和隐藏以及点击图标的更改
- yii的入口文件index.php中为什么会有这两句
yii的应用模板中,index.php中 前面会有这两句 <?php // comment out the following two lines when deployed to produc ...
- 关于tomcat文件下载配置
前言 tomcat文件下载 关闭tomcat目录列表浏览功能 Tomcat 不能下载带中文文件名的附件的方法 在Java Web项目中文件下载是一个很常见的功能,最近在做项目中发现可以通过tomcat ...
- 【系统架构】缓存Memcache 使用原子性操作add,实现并发锁
原文地址 memcache中Memcache::add()方法在缓存服务器之前不存在key时, 以key作为key存储一个变量var到缓存服务器.我们使用add来向服务器添加一个键值对应,如果成功则添 ...