动态创建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. web CSS的知识- 关于后代选择器,子选择器,兄弟选择器的使用

    1. 后代选择器官方解释:后代选择器可以选择作为某元素后代的元素.理解:选择某一标签的后代中,所有的此标签标记例:ul em {color:red;}就是选择,h1标签后代中中,所有的em.代码如下: ...

  2. React-Native 之 项目实战(二)

    前言 本文有配套视频,可以酌情观看. 文中内容因各人理解不同,可能会有所偏差,欢迎朋友们联系我. 文中所有内容仅供学习交流之用,不可用于商业用途,如因此引起的相关法律法规责任,与我无关. 如文中内容对 ...

  3. PHPCMS二次开发——对栏目可用 limit 限定获取

    为了实现类似用limit调用栏目,故自定义了mylimit(这里不能用limit,因为系统在解析的时候会覆盖,所以自定义的limit就起不到作用) 参数,例如: {pc:content  action ...

  4. Dive in python Chapter3 实例

    def buildConnectionString(params): """Build a connection string from a dictionary Ret ...

  5. ATL dll注册失败

    “生成”->“生成解决方案”或“重新生成解决方案”,在注册时,报错:regisvr32 /r/c " C:\Users\Administrator\Desktop\复件DrvWater ...

  6. Truncated incorrect DOUBLE value错误

    mysql报错:Truncated incorrect DOUBLE value sql的update语法错误eg: update Person set name = 'auhnayuiL' and ...

  7. webpack点滴记录

    有了webpack..(不借助gulp/grunt)代码压缩 图片base64,解析less/sass coffee css压缩,MD5加密都帮你做了..还支持按需加载..还有热替换 webpack常 ...

  8. Windows入门基础:1.关于CreateWindow()函数使用中遇到的问题

    我在实现显示窗口的程序中,遇到一个问题:首先程序没有任何语法错误,编译能够通过,但是就是不能弹出窗口. 后来在MSDN中查询CreateWindow()函数,发现了下面这句话: "If lp ...

  9. 01 The Learning Problem

    什么时候适合用机器学习算法? 1.存在某种规则/模式,能够使性能提升,比如准确率: 2.这种规则难以程序化定义,人难以给出准确定义: 3.存在能够反映这种规则的资料. 所以,机器学习就是设计算法A,从 ...

  10. JavaScript 格式化时间

    //格式化 yyyy-MM-dd hh:mm:ss function renderTime(date) { if (date == '' || date == null) { return ''; } ...