很详细,原文链接:https://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html#commentform和https://www.cnblogs.com/ghost-xyx/p/5025571.html

附例子:

<div class="a_div">
构造函数内部可以使用this关键字;普通函数内部不建议使用this,因为这时候this指向的是window全局对象,这样无意间就会为window添加了一些全局变量或函数
</div>
<a>点击</a>
<script type="text/javascript">
//构造函数内部可以使用this关键字;普通函数内部不建议使用this,
//因为这时候this指向的是window全局对象,这样无意间就会为window添加了一些全局变量或函数
//自调用匿名函数里面的代码会在第一时间执行,页面准备好过后,上面的代码就将插件准备好了,
//以方便在后面的代码中使用插件
//别人的代码也正常工作,只是最后定义的那个函数没有用分号结尾而以,然后当页面中引入我们的插件时,报错了
//window等系统变量在插件内部就有了一个局部的引用,可以提高访问速度,会有些许性能的提升
;
(function($, window, document, undefined) {
//面向对象
//定义对象Beautifier 的构造函数
var Carousel = function() {};
Carousel.prototype = {
//容器选择器
container: "",
//图片地址数组
datas: null,
autoplaySpeed: null,
autoplay: false,
// 初始化
init: function(options) {
this.container = options.container;
this.datas = options.datas;
this.autoplaySpeed = options.autoplaySpeed;
this.autoplay = options.autoplay;
$(this.container).html("");
this.createCarousel(options);
this.arrowHover();
this.tabImg();
this.setZindex();
//判断是否需要自动播放
if(options.autoplay || this.autoplay == true) {
this.autoPlay(this.autoplaySpeed);
} else {
console.log(0);
return;
}
},
createCarousel: function(options) {
this.createDOM(this.container, options);
},
// 生成DOM
createDOM: function(container, options) {
console.log(options);
var html = "";
html = "<div class='carousel-box clearfix'>" +
"<div class='transverse-box pull-left'>" +
"</div>" +
"<div class='vertical-box pull-right'>" +
"<ul>" +
"</ul>" +
"</div>" +
"<span class='left-arrow'>‹</span>" +
"<span class='right-arrow'>›</span>" +
"</div>";
$(container).html(html);
var imgLength = options.datas.length;
for(var i = 0; i < imgLength; i++) {
$(".transverse-box").append("<div class='img-item'><img src='" + options.datas[i] + "'></div>");
};
$(".vertical-box ul").append("<li><img src='" + options.datas[1] + "'></li>");
$(".vertical-box ul").append("<li><img src='" + options.datas[2] + "'></li>"); },
arrowHover: function() {
$(".carousel-box").hover(function() {
$(".left-arrow,.right-arrow").css("display", "flex");
}, function() {
$(".left-arrow,.right-arrow").css("display", "none");
})
},
// 点击左右箭头触发翻页
tabImg: function() {
var obj = this;
$(".left-arrow").on("click", function() {
obj.changeZindex_add();
})
$(".right-arrow").on("click", function() {
obj.changeZindex_sub();
})
},
// 设置初始zindex
setZindex: function() {
//左侧横向TAB
var imgNum = $(".transverse-box").find(".img-item").length; for(var i = 0; i < imgNum; i++) {
$(".img-item").eq(i).css({
"zIndex": i
});
$(".img-item").eq(i).attr("Zindex", i);
}
},
//前翻
changeZindex_add: function() {
var imgNum = $(".transverse-box").find(".img-item").length;
var lastZindex = $(".transverse-box").find(".img-item").eq(length - 1).attr("zindex");
var firstImgSrc = $(".transverse-box").find(".img-item").eq(0).find("img").attr("src");
var lastImgSrc = $(".transverse-box").find(".img-item").eq(length - 1).find("img").attr("src");
var last2ImgSrc = $(".transverse-box").find(".img-item").eq(length - 2).find("img").attr("src");
$(".transverse-box").find(".img-item").eq(0).remove();
$(".transverse-box").append("<div class='img-item' zindex='" + (parseInt(lastZindex) + 1) + "'><img src='" + firstImgSrc + "'><div>");
$(".vertical-box ul").find("li").eq(0).find("img").attr("src", lastImgSrc);
$(".vertical-box ul").find("li").eq(1).find("img").attr("src", last2ImgSrc);
$(".transverse-box").find(".img-item").eq(length - 1).css({
"zIndex": parseInt(lastZindex) + 1,
"opacity": 0
}, 500);
$(".transverse-box").find(".img-item").eq(length - 1).animate({
"opacity": 1
}, 500); },
// 后翻
changeZindex_sub: function() {
var imgNum = $(".transverse-box").find(".img-item").length;
var lastZindex = $(".transverse-box").find(".img-item").eq(length - 1).attr("zindex");
var firstZindex = $(".transverse-box").find(".img-item").eq(0).attr("zindex");
var lastImgSrc = $(".transverse-box").find(".img-item").eq(length - 1).find("img").attr("src");
var firstImgSrc = $(".transverse-box").find(".img-item").eq(0).find("img").attr("src");
var first2ImgSrc = $(".transverse-box").find(".img-item").eq(1).find("img").attr("src");
$(".transverse-box").find(".img-item").eq(length - 1).remove();
$(".transverse-box").prepend("<div class='img-item' zindex='" + (parseInt(firstZindex) - 1) + "'><img src='" + lastImgSrc + "'><div>");
$(".vertical-box ul").find("li").eq(0).find("img").attr("src", firstImgSrc);
$(".vertical-box ul").find("li").eq(1).find("img").attr("src", first2ImgSrc);
$(".transverse-box").find(".img-item").eq(0).css({
"zIndex": parseInt(firstZindex) - 1
}).siblings().css("opacity", "0");
$(".transverse-box").find(".img-item").eq(length - 1).animate({
"opacity": 1
}); },
// 自动播放
autoPlay: function(x) {
var obj = this;
this.changeZindex_add();
setTimeout(function() {
obj.autoPlay(x)
}, x);
} }
})(jQuery, window, document);
//至于这个undefined,稍微有意思一点,
//为了得到没有被修改的undefined,我们并没有传递这个参数,但却在接收时接收了它,因为实际并没有传,所以‘undefined’那个位置接收到的就是真实的'undefined'了
</script>
<script type="text/javascript">
$(function() { //在dom文档载入完成后执行的函数
var banner = new Carousel();
//图片地址数组。不要少于三张
var imgSrcDate = ["./public/img/a1.png", "./public/img/a2.png", "./public/img/a3.png", "./public/img/a4.png", "./public/img/a5.png", "./public/img/a6.png"];
banner.init({
container: "#banner",
datas: imgSrcDate,
autoplaySpeed: 5000,
autoplay: false
});
});
</script>

关于【jq插件开发】的更多相关文章

  1. 基于jq插件开发及弹窗实例

    基于jq的插件开发是什么鬼,$.fn是什么鬼,我在实际工作中也遇到过这个问题,下面就让我们一起来看一看这些都是什么鬼. 首先我们介绍$.fn. $.fn是指jquery的命名空间,加上fn上的方法及属 ...

  2. JQ插件开发方法

    由于项目原因,不得不写个JQ侧滑插件来满足需求.. 先引用两篇博文,待测试了 再写怎么做.. http://blog.csdn.net/business122/article/details/8278 ...

  3. jq插件开发总结

    http://www.cnblogs.com/silverLee/archive/2009/12/22/1629925.html jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQue ...

  4. 【jQuery】 jQuery基础

    jQuery 之前在JS的文章中提到过,JS虽然功能全面但是仍然比较接近底层,代码写起来很麻烦,而以jQuery为代表的JS库包装了很多功能,可以让代码更加简单.接下来就来简单地记录一下我学习和所知道 ...

  5. 挂号平台首页开发(UI组件部分)

    JQ插件模式开发UI组件 JQ插件开发方法: 1.$.extend() 扩展JQ(比较简单,功能略显不足) $.extend({ sayHello:function(){ console.log(&q ...

  6. jQ效果:jQuery之插件开发短信发送倒计时功能

    实现的主要功能如下: 1.点击按钮的时候,可以进行倒计时,倒计时自定义. 2.当接收短信失败后,倒计时停止,可点击重新发送短信. 3.点击的元素支持一般标签和input标签. html代码: < ...

  7. jquery学习笔记---插件开发模式和结构

    JQuery插件开发http://www.cnblogs.com/damonlan/archive/2012/04/06/2434460.html github教程:https://github.co ...

  8. jQuery插件开发的模式和结构

    jQuery插件开发 一般来说,jQuery插件的开发分为两种:一种是挂在jQuery命名空间下的全局函数,也可称为静态方法:另一种是jQuery对象级别的方法,即挂在jQuery原型下的方法,这样通 ...

  9. jQuery插件开发(转)

    jQuery插件开发 - 其实很简单 [前言]jQuery已经被广泛使用,凭借其简洁的API,对DOM强大的操控性,易扩展性越来越受到web开发人员的喜爱,我在社区也发布了很多的jQuery插件,经常 ...

随机推荐

  1. [转]How to Download and Setup Blue Prism

    本文转自:https://www.hopetutors.com/blog/uncategorized/how-to-download-and-setup-blue-prism/ The Downloa ...

  2. 成为一名Java架构师的必修课

    一.热门框架源码学习 设计模式篇 Spring5源码解读篇 Mybatis篇 SpringBoot2篇 二. 微服务架构 架构设计篇 BAT互联网架构这些年的演进分析 国内外常见分布式系统架构状况介绍 ...

  3. 【Json】fastjson与jackson常用操作记录

    本文只是记录fastjson.jackson一些常用的操作方法,没作比较,网上写比较的文章很多啦. 1.对象转Json串 // fastjson String objStr = JSON.toJSON ...

  4. linux下nginx【反向代理】配置【负载均衡】配置

    nginx 可以配置多个端口: 1.10088端口 配置反向代理,消除跨域问题. 2.10087端口 配置ip_hash模式的负载均衡,ip_hash可以绕开解决session共享的问题. nginx ...

  5. Java 平台无关性的基石

    Java 在刚刚诞生之初就提出过一个非常著名的口号:"一次编写,到处运行", 这句话充分表达了软件开发人员对冲破平台界限的渴望 在竞争激烈的 IT 领域,各种不同的硬件体系结构和不 ...

  6. Jinja2用法总结

    Jinja2用法总结   一:渲染模版 要渲染一个模板,通过render_template方法即可. @app.route('/about/') def about(): # return rende ...

  7. 洛谷P2664 树上游戏(点分治)

    题意 题目链接 Sol 神仙题..Orz yyb 考虑点分治,那么每次我们只需要统计以当前点为\(LCA\)的点对之间的贡献以及\(LCA\)到所有点的贡献. 一个很神仙的思路是,对于任意两个点对的路 ...

  8. css选择器概述

    css选择器种类 id选择器 类选择器.属性选择器.伪类选择器 元素选择器.伪元素选择器 通配符选择器.子类选择器.后代选择器.相邻兄弟选择器.选择器分组 一.id选择器 <p id=" ...

  9. Github 快速建库上传本地代码

    1 github.com网页端先建好一个空库 2 本地对这个库进行 git clone 3 向本地库中添加已完成文件 4 运行如下命令 git add . (注:别忘记后面的.,此操作是把Test文件 ...

  10. Python 小试牛刀,Django详细解读,让你更快的掌握它!!!

    一.MVC和MTV模式 MVC:将web应用分为模型(M),控制器(C),视图(V)三层:他们之间以一种插件似的,松耦合的方式连接在一起. 模型负责业务对象与数据库的对象(ORM),视图负责与用户的交 ...