关于【jq插件开发】
很详细,原文链接: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插件开发】的更多相关文章
- 基于jq插件开发及弹窗实例
基于jq的插件开发是什么鬼,$.fn是什么鬼,我在实际工作中也遇到过这个问题,下面就让我们一起来看一看这些都是什么鬼. 首先我们介绍$.fn. $.fn是指jquery的命名空间,加上fn上的方法及属 ...
- JQ插件开发方法
由于项目原因,不得不写个JQ侧滑插件来满足需求.. 先引用两篇博文,待测试了 再写怎么做.. http://blog.csdn.net/business122/article/details/8278 ...
- jq插件开发总结
http://www.cnblogs.com/silverLee/archive/2009/12/22/1629925.html jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQue ...
- 【jQuery】 jQuery基础
jQuery 之前在JS的文章中提到过,JS虽然功能全面但是仍然比较接近底层,代码写起来很麻烦,而以jQuery为代表的JS库包装了很多功能,可以让代码更加简单.接下来就来简单地记录一下我学习和所知道 ...
- 挂号平台首页开发(UI组件部分)
JQ插件模式开发UI组件 JQ插件开发方法: 1.$.extend() 扩展JQ(比较简单,功能略显不足) $.extend({ sayHello:function(){ console.log(&q ...
- jQ效果:jQuery之插件开发短信发送倒计时功能
实现的主要功能如下: 1.点击按钮的时候,可以进行倒计时,倒计时自定义. 2.当接收短信失败后,倒计时停止,可点击重新发送短信. 3.点击的元素支持一般标签和input标签. html代码: < ...
- jquery学习笔记---插件开发模式和结构
JQuery插件开发http://www.cnblogs.com/damonlan/archive/2012/04/06/2434460.html github教程:https://github.co ...
- jQuery插件开发的模式和结构
jQuery插件开发 一般来说,jQuery插件的开发分为两种:一种是挂在jQuery命名空间下的全局函数,也可称为静态方法:另一种是jQuery对象级别的方法,即挂在jQuery原型下的方法,这样通 ...
- jQuery插件开发(转)
jQuery插件开发 - 其实很简单 [前言]jQuery已经被广泛使用,凭借其简洁的API,对DOM强大的操控性,易扩展性越来越受到web开发人员的喜爱,我在社区也发布了很多的jQuery插件,经常 ...
随机推荐
- 展开隐形的翅膀,WPR003N补完篇
在上一回合要搞刷机!从它的尸体上踏过去!钢板云路由!WPR003N复活!成功启动OPENWRT中,笔者成功的让一个4年前主流芯片搭上OS的快船,留下一段佳话. 今天看着抽屉里的WPR003N,回忆它之 ...
- .Net—反射
在学习反射之前,先来理解以下几个概念. 1.什么是程序集? 程序集是.net中的概念. .Net中的dll文件与exe文件都是程序集.(exe与dll的区别?) exe文件是可执行文件,有执行入口.可 ...
- 为什么单线程的Redis这么快?
一. Redis简介 Redis是一个开源的内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(li ...
- Mybatis的基本要素--核心对象
大家好啊,今天呢来说下Mybatis的核心对象,也就是说基本三要素. >核心接口和类. >Mybatis核心配置文件(mybatis-config.xml) >SQL映射文件 一.下 ...
- css3动画--位移加阴影
animation: name duration timing-function delay iteration-count direction; 值 描述 animation-name 规定需要绑定 ...
- fab 菜单实现之前传-钟表表盘
个人很喜欢谷歌的material design,很喜欢但是没有动手弄过,今天想动手操作一下Floating Action Button菜单,网上有很多种:圆形.扇形.射线.直线等.我想在一个例子中用到 ...
- Odoo 菜单美化的扩展模块
详见: http://www.oejia.net/blog/2018/07/07/oejia_menu_about.html Odoo 菜单美化主题,odoo默认的菜单算是简洁好用的,如果您觉得还少了 ...
- 无限极分类(adjacency list)的三种方式(迭代、递归、引用)
一般的分类树状结构有两种方式: 一种是adjacency list,也就是是id,parent id这中形式. 另一种是nested set,即左右值的形式. 左右值形式查询起来比较高效,无需递归等, ...
- 好程序员web前端分享如何理解JS的单线程
好程序员web前端分享如何理解JS单线程,JS本质是单线程的.也就是说,它并不能像JAVA语言那样,两个线程并发执行. 但我们平时看到的JS,分明是可以同时运作很多任务的,这又是怎么回事呢? 首先,J ...
- RequestMapper
@RequestMapping(value = "/v1/getAllUrl", method = RequestMethod.POST) public Object getAll ...