很详细,原文链接: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. 树莓派linux系统连接windows7系统中的共享文件夹的正确姿势

    一.要想使用树莓派linux成功访问win7的共享文件夹而不报错,最重要的事情是要正确设置win7中共享文件的设置. 1.需要共享文件点击右键→属性 2.共享选项卡→网络和共享中心 3.点开公用下拉菜 ...

  2. 如何在IIS上发布网站

    本片博客记录一下怎么用IIS发布一个网站,以我自己电脑上一个已经开发完成的网站为例: 1.打开项目 这是我电脑上的一个项目,现在我记录一下将这个项目发布到iis上的整个过程: 2.在vs2017中发布 ...

  3. ios键盘弹起 body的高度拉长,页面底部空白问题。ios软键盘将页面抵到上面后,关闭软键盘页面不回弹的问题。

    js 监听ios手机键盘弹起和收起的事件 /* js 监听ios手机键盘弹起和收起的事件 */ document.body.addEventListener('focusin', () => { ...

  4. 杭电ACM2020--绝对值排序

    输入n(n<=100)个整数,按照绝对值从大到小排序后输出.题目保证对于每一个测试实例,所有的数的绝对值都不相等.   Input 输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整 ...

  5. Less与TypeScript的简单理解与应用,并使用WebPack打包静态页面

    既然选择了远方,便只顾风雨兼程 __ HANS许 系列:零基础搭建前后端分离项目 系列:零基础搭建前后端分离项目 创建空项目 使用Less 使用TypeScript 使用WebPack 开始写项目 总 ...

  6. 折腾Java设计模式之模板方法模式

    博客原文地址:折腾Java设计模式之模板方法模式 模板方法模式 Define the skeleton of an algorithm in an operation, deferring some ...

  7. vue学习之vuex

    1  首先还是安装 npm install vuex --save. 2 在src这种创建目录为store 创建 index.js  (getters.js ,actions.js ,mutation ...

  8. 微信小程序之菜鸟入门教学(二)

    昨天学习了一些简单的概念,今天开始实际操作,通过搭建简单的计算器来学习小程序的架构 一.小程序框架 程序框架如上图所示.由此可见,框架的基本构成为: 1. app.js . app.wxss 2. a ...

  9. 基于windows环境的Flask网站搭建(mysql + conda + redis)

    1下载mysql-installer-community-5.7.24.0.msi (https://dev.mysql.com/downloads/windows/installer/8.0.htm ...

  10. 我们距离AI编程还有多远?

    近几年来,人工智能的信息以不同形式霸占着我们的眼球,我们知道AlphaGo.微软小冰.Sophia,了解过自动驾驶.无人机.智能家居等,深知人工智能是在记忆力.学习力.运算力方面都远超人类的存在,但人 ...