jquery简易手风琴插件的封装
一只前端小白 人气:0理论基础:
基于jquery封装插件,首先我们要清楚封装的代码应该写在哪里?
毫无疑问,写在原型中...
写入原型的好处:
数据共享,节省空间
那么既然知道是写在原型中,那怎么将封装的代码写入原型呢?
首先在jq文件中找到如下代码?
jQuery.fn = jQuery.prototype = {...}
jQuery.fn等于jq对象的原型,而在jq中,jQuery可简写为$
所以我们可以直接在$.fn中编写封装的代码
/*手风琴插件封装*/ $.fn.accordion=function (ele,width) { //随机颜色值 var setBgc=function (eleObj) { var r,g,b; r=Math.floor(Math.random()*256); g=Math.floor(Math.random()*256); b=Math.floor(Math.random()*256); $(eleObj).css("background-color","rgb("+r+","+g+","+b+")"); } if (!ele)return; width=width||100; //定义变量 var eles=this.find(ele); var nowW=this.width()-(eles.length-1)*width; var avgW=this.width()/eles.length; //设置颜色 eles.each(function (index,element) { setBgc(element); }); //添加多个事件 eles.on({ "mouseenter":function () { $(this).stop().animate({ width:nowW }).css("background-size","100% 100%").siblings().stop().animate({ width:width }).css("background-size","auto"); }, "mouseleave":function () { eles.stop().animate({ width:avgW }).css("background-size","auto"); } }); return this; }
以上就是封装的代码,在导入jq文件后,我们就可以直接调用了?
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; list-style: none; } div { width: 1200px; height: 400px; /*border: 2px solid #000;*/ margin: 100px auto; overflow: hidden; } ul{ width: 1220px; } li { width: 240px; height: 400px; float: left; } </style> </head> <body> <div id="box"> <ul> <li></li> <li></li> <li></li> <li></li> <li></li> </ul> </div> <script src="js/jquery-1.12.4.js"></script> <script src="jquery-accordion.js"></script> <script> //调用封装的插件 $("#box").accordion("li").find("li").each(function (index,ele) { $(ele).css("background-image","url(images/"+(index+1)+".jpg)"); }); </script> </body> </html>
以上就是简易手风琴插件的封装和调用,最后附上最终效果图:
加载全部内容