动态创建jQuery插件

一.实现功能:

1.基本功能:自适应式整屏分页功能的实现

2.通过鼠标点击标签页转换分页,支持键盘上下左右键的转换分页,同样支持
鼠标滚轮上下滑动转换分页 3.切屏时的动画效果 4.jQuery实现简单的组件开发 5.本文创建的组件直接绑定在$.fn上,可以在Dom调用

二.主要实现代码

1.创建的分页的默认配置,用户可以修改其内容,来实现不同的内容
```
$.fn.PageSwitch.defaults = {
selectors: { //可以修改页面上的各块的class名
sections: ".sections",
section: ".section",
page: ".pages",
active: ".active"
},
index: 0, //分页页码
easing: "ease", //分页动画的
duration: 500,
loop: false, //代表页面是否可以循环播放
pagination: true, //代表页面是否分页
keyboard: true, //是否能触发键盘事件
direction: "vertical", //分页的方向,默认竖屏,横屏:“herizontal”
callback: "" //翻页完成后的回调函数
}
``` 2.创建对象的单例模式
```
$.fn.PageSwitch = function(options) { //单例模式
return this.each(function() {
var me = $(this),
instance = me.data("PageSwitch")
if (!instance) {
instance = new PageSwitch(me, options)
me.data("PageSwitch", instance)
}
//判断传递参数options的类型,如果是字符串,用户就可以直接调用
//pageSwitch.prototype内的方法
if ($.type(options) === "string") return instance[options]();
});
}
``` 3.创建Dom中的用到的各种事件方法
```
var PageSwitch = (function() { //以后可以根据需求改善pageSwitch对象
function PageSwitch(element, options) {
this.settings = $.extend(true, $.fn.PageSwitch.defaults, options || {})
this.element = element;
this.init(); //初始化插件
}
PageSwitch.prototype = { //定义插件共有方法
//初始化的方法
// 实现初始化dom结构,布局,分页及绑定事件
init: function() {},
//获取滑动页面的数量
pagesCount: function() {
return this.section.length;
},
//获取滑动的宽度(横屏)或高度(竖屏)
SwitchLength: function() {
return this.direction ? this.element.height() : this.element.width()
},
//向前滑动,上一页
prev: function() {},
//向后滑动,向后一页
next: function() {}, //主要针对横屏情况进行页面布局
_initLayout: function() {},
//实现分页的dom结构及css样式
_initPaging: function() {},
//初始化插件事件
_initEvent: function() {
var me = this;
// 页面的点击事件
me.element.on("click", me.selectors.page + " li", function() {}) //鼠标的滚轮事件
me.element.on("mousewheel DOMMouseScroll", function(e) {}) //键盘事件
if (me.settings.keyboard) {
$(window).on("keydown", function(e) {})
}
//浏览器窗口变化事件
$(window).resize(function() {}) //分屏完成后的执行动画
me.sections.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend", function() {}),
//页面滚动
_scrollPage: function() {}
}
return PageSwitch; //返回PageSwitch对象,重要!!!
})();
```
4.在html调用时,写法如下:
```
  主要的html代码展示:
    
    <div id="container" data-PageSwitch>
      <div class="sections">
        <div class="section" id="section0">
          <h3>This is the Page</h3>
        </div>
        <div class="section" id="section1">
          <h3>This is the Page</h3>
        </div>
        <div class="section" id="section2">
          <h3>This is the Page</h3>
        </div>
        <div class="section" id="section3">
          <h3>This is the Page</h3>
        </div>
      </div>
    </div>
  自定义插件的调用方法:
<script>
$("#container").PageSwitch({ //其中的值可以修改,以实现不同的效果
index: 0, //分页页码
easing: "ease", //分页动画的
duration: 500,
loop: false, //代表页面是否可以循环播放
pagination: true, //代表页面是否分页
keyboard: true, //是否能触发键盘事件
direction: "vertical", //分页的方向,默认竖屏,横屏:“herizontal”
callback: "" //翻页完成后的回调函数
})
</script>   内部配置参数时,在整屏页面动画完成后可以定义callback函数,用来实现页面内的一些用户需要的操作,比如动画,css属性动画等
```
github开源代码地址:
https://github.com/Hasyou99/jQuery--PageSwitch

基于jQuery的自定义插件:实现整屏分页转换的功能的更多相关文章

  1. 基于jquery下拉列表树插件代码

    分享一款基于jquery下拉列表树插件代码.这是一款实用的jquery 树形下拉框 下拉树代码下载.效果图如下: 在线预览   源码下载 实现的代码. html代码: <table width= ...

  2. 基于jQuery头像裁剪插件cropbox

    今天给大家分享一款基于jQuery头像裁剪插件cropbox,这是一款简单实用的jQuery头像在线裁剪插件.该插件适用于适用浏览器:IE8.360.FireFox.Chrome.Safari.Ope ...

  3. 基于jQuery的用户界面插件集合---EasyUI

    easyui是一种基于jQuery的用户界面插件集合.为创建现代化,互动,JavaScript应用程序,提供必要的功能.使用easyui你不需要写很多代码,你只需要通过编写一些简单HTML标记,就可以 ...

  4. 基于jQuery的tooltips插件--poshytip

    摘要: 分享一款在项目中使用的tooltips插件--poshytip,这是一款基于jQuery的插件,其特点是简单易用,支持浏览器:IE6+, FF 2+, Opera 9+, Safari 3+, ...

  5. jquery自定义插件来实现分页的效果

    本节将介绍如何定义自己的jquery插入,实现分页效果,话不多说,.看看达到的效果: 分页插件 实现的代码例如以下: <!DOCTYPE HTML PUBLIC "-//W3C//DT ...

  6. jquery如何自定义插件(扩展实例/静态方法)

    1.jquery插件的种类: 1).封装对象方法的插件(相当于实例方法) (使用 $.fn.extend({"方法名":function(参数){//方法体} }) ) 2).封装 ...

  7. jQuery开发自定义插件 $.extend()与$.fn.extend()

    jQuery extend()和jQuery.fn.extend() jQuery提供两个用于封装扩展的方法: 1.$.extend(); 扩展jQuery类方法,即jQuery全局方法 (在全局可直 ...

  8. 基于jquery的自定义显示消息数量

    根据需求简单的实现一个小功能控件,暂时不支持扩展 $("xxxxxxx").iconCountPlugin(options, start, isOffset) {//三个参数,自定 ...

  9. 基于Jquery、JqueryUI插件编写

    刚开始编写jquery插件的时候,只是从网上找个模板看着写,并不理解.刚刚仔细把官网的API看了下,突然觉得豁然开朗了.马上放假了想着应该整理整理不然忘了又. How to create a Jque ...

随机推荐

  1. HTTP请求错误400、401、402、403、404、405、406、407、412、414、500、501、502解析

    HTTP 错误 400 400 请求出错 由于语法格式有误,服务器无法理解此请求.不作修改,客户程序就无法重复此请求. HTTP 错误 401 401.1 未授权:登录失败 此错误表明传输给服务器的证 ...

  2. Vue学习之路---No.7(分享心得,欢迎批评指正)

    老规矩,先回顾一下上回的重点: 1.对于input框,若为单选框,如果没有对其设置value,那么其checked的值将在true Or false之间切换:如果设置了value,那么将会切换valu ...

  3. sass学习笔记 -- sass的四种编译方法

    sass的四种编译方法:(.scss) (一)ruby下的命令行编译 首先需要安装ruby,注意需勾选Add Ruby executables to your PATH选项,以添加环境变量. ruby ...

  4. WebX框架学习笔记之二----框架搭建及请求的发起和处理

    框架搭建 执行环境:windows.maven 执行步骤: 1.新建一个目录,例如:D:\workspace.注意在盘符目录下是无法执行成功的. 2.执行如下命令: mvn archetype:gen ...

  5. iOS开发之核心动画(Core Animation)

    1.概述 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.framework和引入对应的框架< ...

  6. ECMAScript6-let和const命令

    ▓▓▓▓▓▓ 大致介绍 ES6是下一代的JavaScript语言的标准,目标是让JavaScript可以用来编写大型的复杂程序,成为企业级开发语言,要查看浏览器对ES6的支持程度可以用阮一峰大佬写的工 ...

  7. Tcl与Design Compiler (八)——DC的逻辑综合与优化

    本文属于原创手打(有参考文献),如果有错,欢迎留言更正:此外,转载请标明出处 http://www.cnblogs.com/IClearner/  ,作者:IC_learner 对进行时序路径.工作环 ...

  8. First Article

    Hello World 愚人节的这天,我在我师傅的引导下,踏上了博客园这条不归路...... 先做下自我介绍,我姓李,木子李,因为本人比较中二,所以大家就叫我李中二吧! 工作是前端开发,目前正在深圳一 ...

  9. This Handler class should be static or leaks might occur Android

    首先解释下这句话This Handler class should be static or leaks might occur,大致意思就是说:Handler类应该定义成静态类,否则可能导致内存泄露 ...

  10. Win10专业版下图片拖到PS无法打开的解决技巧

    PS这个软件是用户最常用的软件之一,其强大的图形处理能力毋庸置疑.有用户表示在Win10专业版系统中使用PS发现图片不能直接拖动到PS中打开,这个问题本身不是特别大的问题,但这一小小的毛病会打破用户习 ...