你的专属定制——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添加新的全局 ...
随机推荐
- Win7下C:\Users\Cortana以账户名称命名的系统文件夹用户名的修改
Win7下C:\Users\Cortana以账户名称命名的系统文件夹用户名的修改 Win7下C:\Users\Cortana以账户名称命名的系统文件夹用户名的修改 即修改Cmd命令提示符:C:\Use ...
- [读书笔记] 四、SpringBoot中使用JPA 进行快速CRUD操作
通过Spring提供的JPA Hibernate实现,进行快速CRUD操作的一个栗子~. 视图用到了SpringBoot推荐的thymeleaf来解析,数据库使用的Mysql,代码详细我会贴在下面文章 ...
- 高新技术---枚举及部分JDK1.5新特性
第一讲 枚举 一.概述 这里说的枚举,不是集合vector的特有枚举迭代器,而是JDK1.5的一个新特性.之所以单独拿它开刷,是这个知识点比较重要,同时相对来说比较难理解一些. 为什么要有枚举 ...
- Ext.grid.EditorGridPanel点击单元格添加菜单栏
1.定义菜单栏需要的全局变量 var khbm; var type; 2.新建一个菜单栏 var smenu = new Ext.menu.Menu({ id:"sMenu", i ...
- 运用jQuery写的验证表单
//运用jQuery写的验证表单 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...
- 广度优先搜索(BFS)——迷宫的最短路径
宽度优先搜索按照距开始状态由近到远的顺序进行搜索,因此可以很容易的用来求最短路径,最少操作之类问题的答案. 宽度优先搜索介绍(一篇不错的文章). 题目描述: 给定一个大小为N*M的迷宫.迷宫有通道和墙 ...
- TCON板新选择--NCS8807 LVDS转mLVDS芯片
NCS8807 LVDS-to-mLVDS w/ Scaler (4K TCON w/ Scaler) General Description NCS8807 is an LVDS 4K TCON w ...
- XMind与MindManager哪个好(网易云课堂老师:Array老师讲解稿)
XMind与MindManager哪个好 作者:网易云课堂老师:Array老师讲解稿 思维导图是一种将放射性思考具体化的方法,可以将人们的创造性思维及时捕捉并呈现,深受商业人士的喜爱.目前,XMind ...
- Django models数据库配置以及多数据库联用设置
今天来说说web框架Django怎么配置使用数据库,也就是传说中MVC(Model View Controller)中的M,Model(模型). 简单介绍一下Django中的MVC: 模型(model ...
- Mysql 分区详解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt120 一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.m ...