你的专属定制——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添加新的全局 ...
随机推荐
- 【前端】react学习阶段总结,学习react、react-router与redux的这些事儿
前言 借用阮一峰的一句话:真正学会 React 是一个漫长的过程. 这句话在我接触react深入以后,更有感触了.整个react体系都是全新的,最初做简单的应用,仅仅使用react-tools打包js ...
- Gson-记录一个空格引发的json血案
使用的Gson将json自动装载到Bean,一般情况下,用起来又快又稳. 直到有一天,测试告诉我说,填写地址时,地址里有空格,就会500异常. 我把异常截取出来: Type Exception Rep ...
- golang channel无缓冲通道会发生阻塞的验证
公司搞了午间技术par,本周我讲的主题是关于无缓冲通道channel是否会发生阻塞,并进行了验证. go语言中channel分为无缓冲通道和有缓冲通道两种 channel提供了一种在goroutine ...
- Java基础---继承、抽象、接口
一.概述 继承是面向对象的一个重要特征.当多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继那个类即可.这时,多个类可以称为子类,单 ...
- 『HTMl5』学习日志
w3g提供在线校验页面:http://validator.w3.org/ 1.文本框获取焦点 <%@ page language="java" import="ja ...
- oracle时间范围查询
当时间精确到秒的指标和时间精确到日的时间进行对比是恒不等于的,但是可以判断大于或者等于的情况. 举个例子,指标[时间精确到秒] select 时间精确到秒 from table where 时间精确到 ...
- 在htnl中,<input tyle = "text">除了text外还有几种种新增的表单元素
input标签新增属性 <input list='list_t' type="text" name='user' placeholder='请输入姓名' va ...
- SQL Server 的锁定和阻塞
本帖提供两种做法,可避免在 SQL Server 事务锁定时产生的不正常或长时间阻塞,让用户和程序也无限期等待,甚至引起 connection pooling 连接数超过容量. 所谓的「阻塞」,是指当 ...
- Spring Cloud官方文档中文版-客户端负载均衡:Ribbon
官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#_spring_cloud_netflix 文中例子我做了一些测试在:h ...
- Java设计模式之-------->"代理模式"
01.什么是代理模式? 解析:代理(Proxy):代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不想或者不能直接引用另一个对象, 而代理对象可以在客户端和目标 ...