你的专属定制——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添加新的全局 ...
随机推荐
- VMware Workstation 12 Pro 之安装林耐斯优麒麟 X64-UI系统
VMware Workstation 12 Pro 之安装林耐斯优麒麟 X64-UI系统... ------------------------------- -------------------- ...
- spring boot / cloud (六) 开启CORS跨域访问
spring boot / cloud (六) 开启CORS跨域访问 前言 什么是CORS? Cross-origin resource sharing(跨域资源共享),是一个W3C标准,它允许你向一 ...
- BotVS开发基础—2.7 指标MA
代码 #计算一小时 MA5均线 # 时间 2017-06-29 00:00:00 -2017-06-30 00:00:00 1小时 实盘级Tick # 平台 OCKCoin BTC def main( ...
- Spring(一)--作用、IOC容器细节、搭配环境、Spring实验
1.Spring作用: 1.生态体系庞大,全能型选手![springmvc是其一个子模块,jdbcTemplate能直接操作数据库!] 2.将其他组件粘合在一起 比如将S ...
- os.path python使用遍历文件夹文件
import os import os.path rootdir = "d:\data" # 指明被遍历的文件夹 for parent,dirnames,filenames in ...
- ASP.NET 给Web中的网页添加Loading进度条形式
前段时间客户提了一个需求,要求给网站中某些功能添加进度条形式,因为某些功能查询的数据量太大,经常会出现点击Search按钮,但是没有任何反应的情况,会让用户以为网站挂掉了,导致投诉的事情发生,所以客户 ...
- Linux虚拟机之间实现密钥登陆
Server1与Server2在同一虚拟网络当中,在Server2中使用Server1的Hostname连接Server1,并且无需密码认证. Server1, Hostname: hlmvmea ...
- MongoDB学习之——安装
MongoDB安装 说明: 本次安装教程: 版本:mongoDB-3.2.4 安装环境:windows 10 ,64位操作系统 准备:安装包.Robomongo(客户端用于查看mongoDB里面的数据 ...
- 安装sklearn过程
sklearn是scikit-learn的简称,诸多python工具包都需要这个库 安装顺序: wheel numpy scipy sklearn 因为这个库一直安装不好,都没有动力继续深造机器学习了 ...
- Ibatis组合键关联查询
在使用Ibatis时,会经常遇到关联查询,一般有两种解决方案: 使用代码进行关联查询 使用Ibatis配置文件进行关联查询 使用代码进行关联查询不作解释,本次主要是针对Ibatis配置文件进行关联查询 ...