你的专属定制——JQuery自定义插件
前 言
絮叨絮叨
jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
那么这次,我就和大家来分享一下JQuery中的一个强大的功能——自定义插件。当我们在去实现一个小功能的时候,比如说banner图的滚动,插件的使用会让我们省去大量的代码。那又当我们会经常使用一个功能然而又懒得每次都去写怎么办?那当然就需要我们自己写一个属于自己的插件,用的时候直接拿我们自定义的插件用就可以了。
| JQuery插件类型 |
1实例对象插件
$.fn.setBgColor = function(bgColor){
//在$.fn声明的插件函数中,可以使用this代指调用这个插件的对象节点。
//而且this是一个JQUery对象
bgColor = bgColor? bgColor:"#ccc"; //设置背景色的默认值
this.css("background-color",bgColor);
}
$("#div1").setBgColor("red");
2全局函数插件
全局函数插件是一个类级别的插件,这类插件最大的特点,就是可以直接给jQuery添加静态方法,并且可以将函数置于jQuery命名空间中.
$.extend({
func : function(){} //func --> 插件名
});
| JQuery自定义插件要点 |
1 .插件的文件命名必须严格遵循jQuery.[插件名].js的规则,以便于与其他js文件的区
分,如插件名
4. 在插件内部的代码中,如果要访问每个元素,可以使用this.each方法来遍历全部元素
| banner图的滚动实例 |
html代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>自定义插件实现banner滚动</title>
<script src="js/jquery-3.1.1.js" type="text/javascript"></script> <!--导入JQuery-->
<script src="js/jquery.scrollBanner.js" type="text/javascript"></script> <!--导入自定义插件 “jquery.scrollBanner.js”-->
</head>
<body> <div id="banner"> </div> <script type="text/javascript">
$("#banner").scrollBanner({
images : [ {src:"img/banner11.png",title:"banner1",href:"http://www.baidu.com"},
{src:"img/banner22.png",title:"banner2",href:"http://www.sina.com"},
{src:"img/banner33.png",title:"banner3",href:"http://www.qq.com"},
{src:"img/banner44.png",title:"banner4",href:"http://www.zealer.com"},
]
});
</script>
</body>
</html>
自定义插件代码
/* 该插件实现了Banner图的滚动效果。
*
* 一、插件的属性:
* images : 接受数组类型,数组的每个值应为对象。对象具有属性: src->图片的路径 title->图片指上后的文字 href->点击图片跳转的页面
*
* scrollTime : 每张图片的停留时间,单位毫秒。 2000
* bannerHeight : Banner图的高度. 500px
*
* iconColor : 提示图标的颜色。默认 white
* iconHoverColor : 提示图标指上之后的颜色。 默认 orange
* iconPosition : 提示图标的位置,可选值left/center/right。 默认center
*
*/
!function($){
$.fn.scrollBanner = function(obj){
// 声明各个属性的默认值
var defaults = {
images : [],
scrollTime : 2000,
bannerHeight : "500px",
iconColor : "white",
iconHoverColor : "black",
iconPosition : "center",
}
// 将默认值与传入的对象比对,如果传入的对象有未赋值属性,则使用默认对象的属性
obj = $.extend(defaults,obj); // 组建DOM布局
$("body").css({"padding" : "0px","margin" : "0px",}); this.empty().append("<div class='scrollBanner-banner'></div>");
$.each(obj.images,function(index,item){
$(".scrollBanner-banner").append("<div class='scrollBanner-bannerInner'><a href='"+item.href+"' target='_black'><img src='"+item.src+"' title='"+item.title+"' /></a></div>");
});
$(".scrollBanner-banner").append("<div class='scrollBanner-bannerInner'><a href='"+obj.images[0].href+"' target='_black'><img src='"+obj.images[0].src+"' title='"+obj.images[0].title+"' /></a></div>"); this.append("<div class='scrollBanner-icons'></div>");
$.each(obj.images,function(index,item){
//data-* 属性是H5允许用户自行在HTML标签上保存数据的数据
//保存在data-*中的数据,可以使用JS读取调用
$(".scrollBanner-icons").append("<span class='scrollBanner-icon' data-index='"+index+"'></span>");
}); //设置各种css
this.css({
"width" : "100%",
"height" : obj.bannerHeight,
"overflow" : "hidden",
"position" : "relative",
}); $(".scrollBanner-banner").css({
"width" : obj.images.length +1+"00%",
"height" : obj.bannerHeight, }); $(".scrollBanner-bannerInner").css({
"width" : 100/(obj.images.length +1)+"%",
"height" : obj.bannerHeight,
"overflow" : "hidden",
"float" : "left"
}); $(".scrollBanner-bannerInner img").css({
"width" : "1920px",
"height" : obj.bannerHeight,
"position" : "relative",
"left" : "50%",
"margin-left" : "-960px",
}); $(".scrollBanner-icons").css({
"width": 35*obj.images.length+"px",
"height": "7px",
"position" : "absolute",
"bottom" : "40px",
// "left" : "0px",
"z-index": "100",
});
switch (obj.iconPosition){
case "left":
$(".scrollBanner-icons").css({
"left" : "40px",
});
break;
case "right":
$(".scrollBanner-icons").css({
"right" : "40px",
});
break;
case "center":
$(".scrollBanner-icons").css({
"left" : "50%",
"margin-left" : "-"+15*obj.images.length+"px",
});
break;
} $(".scrollBanner-icon").css({
"width": "20px",
"height": "7px",
"background-color": obj.iconColor,
"display": "inline-block",
"margin": "0px 5px", });
$(".scrollBanner-icon:eq(0)").css({
"background-color":obj.iconHoverColor,
}); //实现Banner滚动功能
var count = 1;
var icons = $(".scrollBanner-icon");
setInterval(function(){ $(".scrollBanner-banner").css({
"margin-left" : "-"+count+"00%",
"transition" : "all .5s ease",
});
$(".scrollBanner-icon").css("background-color",obj.iconColor);
$(".scrollBanner-icon:eq("+count+")").css("background-color",obj.iconHoverColor); if(count>=obj.images.length) $(".scrollBanner-icon:eq("+0+")").css("background-color",obj.iconHoverColor); if(count>obj.images.length){ count = 0;
$(".scrollBanner-banner").css({
"margin-left" : "0px",
"transition" : "none",
});
}
count++;
},obj.scrollTime); //小图标指上以后变色并且切换banner图
$(".scrollBanner-icon").mouseover(function(){
$(".scrollBanner-icon").css("background-color",obj.iconColor);
//↓由span触发mouseover事件,则this指向这个span。
//↓但是,这this是JS对象,必须使用$封装成JQuery对象。
$(this).css("background-color",obj.iconHoverColor);
// console.log($(this).attr("data-index"));
var index = $(this).attr("data-index");
count = index;//将计数器count修改为index的值,让banner滚动的定时器能够刚好滚到所指图片的下一张。
$(".scrollBanner-banner").css({
"transition" : "none",
"margin-left" : "-"+index+"00%", });
}); } }(jQuery);
效果图如下:

你的专属定制——JQuery自定义插件的更多相关文章
- JQuery自定义插件详解之Banner图滚动插件
前 言 JRedu JQuery是什么相信已经不需要详细介绍了.作为时下最火的JS库之一,JQuery将其"Write Less,Do More!"的口号发挥的极致.而帮助J ...
- 深入学习jQuery自定义插件
原文地址:jQuery自定义插件学习 1.定义插件的方法 对象级别的插件扩展,即为jQuery类的实例增加方法, 调用:$(选择器).函数名(参数); $(‘#id’).myPlugin(o ...
- jquery自定义插件——以 选项卡插件为例
一直打算尝试自定义插件,终于付诸实践了,现在把内容发表出来,与大家共勉. 我是根据自己正在用的插件,模仿其源码,实现的自定义插件,完成之后,在网上看相关资料,对自定义插件部分,有了更明确的认识. jq ...
- jQuery自定义插件
jQuery自定义插件 jQuery自定义插件按照功能分类,可以分为三类, 1>封装对象方法的插件,(也就是基于某个DOM元素的jQuery对象,局部的) 2>封装全局函数的插件, ( ...
- jQuery自定义插件--banner图滚动
前言 jQuery是一个功能强大的库,提供了开发JavaScript项目所需的所有核心函数.很多时候我们使用jQuery的原因就是因为其使用插件的功能,然而,有时候我们还是需要使用自定义代码来扩展这些 ...
- 代码:jquery自定义插件 demo
jquery自定义插件 demo 2016-1-13 只是一个简易的示例 <script type="text/javascript" src="http://cd ...
- fullpage的使用以及less, Sass的属性和JQuery自定义插件的声明和使用
使用fullpage的步骤 1 导入JQuery.js fullpage,js fullpage.css 2 组建网页布局,最外层id="fullpage" 单页class=& ...
- jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
上一篇记录了BaiduTemplate模板引擎使用示例附源码,在此基础上对使用方法进行了封装 自定义插件jajaxrefresh.js 代码如下: //闭包限定命名空间 (function ($) { ...
- Jquery自定义插件之$.extend()、$.fn和$.fn.extend()
jquery插件的种类: 1.对象级别的插件开发,即给jQuery对象添加方法,封装对象方法的插件,如:parent().appendTo() 2.一种是类级别的插件开发,即给jQuery添加新的全局 ...
随机推荐
- 一个C#操作RabbitMQ的完整例子
一.下载RabbitMQ http://www.rabbitmq.com/install-windows.html 二.下载OTP http://www.erlang.org/downloads 三. ...
- 正则表达式-linux基础
通配符 通赔符是模糊匹配的基础,因为通赔符机制的存在使得我们在查找文件的时候非常方便 * :匹配任意长度的任意字符,也可以一个都没有 . :匹配任意单个字符,必须有一个 [ ] ...
- Django项目之小博客
学习了几天Django,学着做了一个简易的小博客,主要用来练习Django基本的操作. 主要用到的命令和Django包.模块等: django.urls.url django.urls.import ...
- 四张图揭秘中国AI人才现状
本文数据来源:领英<全球AI领域人才报告> 最近有非常多的同学看了之前我们的一些文章和直播之后,多对AI领域跃跃欲试,本文我们结合一份人才报告(我个人感觉这份报告还是比较靠谱的),为大家揭 ...
- DB Error || Warning
数据库在进行增删改查时有时候会发生错误,当在程序中一个操作总是不起作用的时候,我们可以尝试如下方法: 1.输出sql语句,有的sql语句可能是通过一些字符拼接完成的,这时候可能会发生'', +之类的混 ...
- 实战案例--TEMPDB暴涨
前言 tempdb暴增,造成磁盘空间不足,甚至影响业务运行. 正文 如图,tempdb log文件从7.40开始突然暴涨,因为 tempdb 0 M到 40G tempdb 所 ...
- BZOJ 3379: [Usaco2004 Open]Turning in Homework 交作业
Description 贝茜有C(1≤C≤1000)门科目的作业要上交,之后她要去坐巴士和奶牛同学回家. 每门科目的老师所在的教室排列在一条长为H(1≤H≤1000)的走廊上,他们只在课后接收 ...
- Linux下设置Tomcat虚拟路径
问题描述:我在上传图片的位置不在Tomcat服务器下,用户无法访问 解决方案:配置Tomcat虚拟路径使用户可以访问图片 配置Tomcat # cd /usr/local/apache-tomcat- ...
- JSON与String之间互转
一,String转json 这个JSON.parse()与eval()都可以实现,但是它们是有区别的, JSON.parse对json字符串要求比eval()更为严格,key名称(例如name)全部必 ...
- Spring mybatis源码篇章-XMLLanguageDriver解析sql包装为SqlSource
前言:通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-MybatisDAO文件解析(二) 首先了解下sql mapper的动态sql语法 具体的动态sql的 ...