你的专属定制——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添加新的全局 ...
随机推荐
- vue-cli脚手架npm相关文件解读(8)check-versions.js
系列文章传送门: 1.build/webpack.base.conf.js 2.build/webpack.prod.conf.js 3.build/webpack.dev.conf.js 4.bui ...
- go web 第一天 学习笔记
package main import ( "fmt" "log" "net/http" "strings" ) fun ...
- c++中string.erase()函数的用法(转)
erase函数的原型如下:(1)string& erase ( size_t pos = 0, size_t n = npos );(2)iterator erase ( iterator p ...
- Linux企业运维人员最常用150个命令汇总
命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) l ...
- 基于linux vim环境python代码自动补全
(一)简述 在使用vim编写python文件的过程中,默认的vim不会实现代码补全功能,在写程序或者是改程序的时候不是很方面,很容易出错,但是vim提供了各种插件,其中包括这个python文件的自动补 ...
- SVG基本形状及样式设置
前面的话 图形分为位图和矢量图.位图是基于颜色的描述,是由像素点组成的图像:而矢量图是基于数学矢量的描述,是由几何图元组成的图像,与分辨率无关.可缩放矢量图形,即SVG,是W3C XML的分支语言之一 ...
- Jmeter+Jenkins的聚合报告中添加QPS栏目显示
1.进入jmeter/extras目录,修改 jmeter-results-detail-report_21.xsl 2.打开文件修改 如上所示,在文件中添加6个地方关于QPS的显示即可, 然后替 ...
- ThinkPhp5源码剖析之Cache
为什么需要Cache(缓存)? 假设现在有一个小说网,有非常多的读者,有一篇新的章节更新了,那么可能一分钟内有几万几十万的访问量. 如果没有缓存,同样的内容就要去数据库重复查询,那可能网站一下就挂掉了 ...
- 搭建DNS服务
author:JevonWei 版权声明:原创作品 修改/var/named/下的数据库文件的数据时,需手动修改serial序列号 UDP协议53端口用于用户DNS查询,TCP协议53端口用于主从DN ...
- 到处是坑的微信公众号支付开发(java)
之前公司项目开发中支付是用阿里的支付做的,那叫一个简单,随意:悲催的是,现在公司开发了微信公众号,所以我步入了全是坑的微信支付开发中... ------------------------------ ...