zoukankan      html  css  js  c++  java
  • jQuery实现轮播切换以及将其封装成插件(3)

      在前两篇博文中,我们写了一个普通的轮播切换。但是我们不能每一次需要这个功能就把这些代码有重新敲一次。下面我们就将它封装成一个插件。

      至于什么是插件,又为什么要封装插件,不是本文考虑的内容。

       我们趁着刚才的思路还在,直接开始写。

    一、jQuery插件的基本结构:

        我只介绍本例中用到的一种插件:

    1 (function($){
    2     $.fn.extend({
    3         "插件函数名(随意)":function(){
    4             //函数内容
    5          
    6         }
    7     });
    8 })(jQuery);

    二、要做哪些准备

        按照我的个人习惯。首先需要前面博文中我们写的html代码作为模板。使用jQuery动态生成它。

    然后将涉及到的CSS式样,放入单独的文件。最后将js函数放入上面的插件函数中,作为函数中的函数。

     1 ;(function($){
     2     $.fn.extend({
     3         "mySlider":function(){
     4             if(!this.hasClass("gr_UI_sliderBox")){
     5                 console.log("this dom not have class gr_UI_sliderBox");
     6                 return;
     7             }
     8  
     9             //be sure only once and add ul.
    10             var $sliderUl = this.find("ul");
    11             if($sliderUl.length>=1){
    12                 return;
    13             }
    14  
    15             var $add = $("<ul class='img_ul'><li class='slider_Item_1'></li><li class='slider_Item_2'></li><li class='slider_Item_3'></li></ul><ul class='btn_ul'><li></li><li></li><li></li></ul>");
    16             $(this).append($add);
    17  
    18             function moveByIndex(index){
    19  
    20                 $(".gr_UI_sliderBox ul.img_ul li.slider_current").removeClass("slider_current");
    21                 $(".gr_UI_sliderBox ul.img_ul li:eq(" + index + ")").addClass("slider_current");
    22                 var move_x = -index * 800;
    23                 var str_m_x = move_x + "px";
    24                 var $sliderUl = $(".gr_UI_sliderBox ul.img_ul");
    25                 $sliderUl.animate({left: str_m_x}, "slow");
    26                 $(".gr_UI_sliderBox ul.btn_ul li:eq(" + index + ")").addClass("current_btn").siblings().removeClass("current_btn");
    27             }
    28  
    29             function s_Run(){
    30                 var newCurrentIndex = $(".gr_UI_sliderBox ul.img_ul li.slider_current").index() + 1;
    31                 var liCount = $(".gr_UI_sliderBox ul.img_ul li").length;
    32                 if(newCurrentIndex >= liCount){
    33                     newCurrentIndex = 0;
    34                 }
    35                 console.log("new index : " + newCurrentIndex + "     length : " + liCount);
    36                 moveByIndex(newCurrentIndex);
    37             }
    38      
    39         }
    40  
    41     });

    这样,我们就可以通过mySlider函数动态生成轮播切换。

    但是,就以目前的代码,是不包括事件的。注意在插件函数中是不能使用ready()的。我们可以自己初始化,并且绑定事件和函数。

     1        //init
     2             var tCtr;
     3             $(".gr_UI_sliderBox ul.img_ul li:eq(0)").addClass("slider_current");
     4             $(".gr_UI_sliderBox ul.btn_ul li:eq(0)").addClass("current_btn");
     5        
     6  
     7        //绑定事件
     8             $(".gr_UI_sliderBox ul.btn_ul li").bind({
     9                 mouseenter:function(){
    10                     clearTimeout(tCtr);
    11                     moveByIndex($(this).index());
    12                 },
    13                 mouseleave:function(){
    14                     tCtr = setInterval(s_Run, 2000);
    15                 }
    16  
    17             });
    18  
    19             tCtr = setInterval(s_Run, 2000);

    我们完成了插件的编写,但是我们要如何使用呢?

    下面我们来调用它。

    我们将所需要的文件(插件.js和插件.css)配置到工程中。在需要使用的地方定义一个<div></div>

     

    <div class="gr_UI_sliderBox" id="test"></div>

    在上面的代码中,gr_UI_sliderBox就是我们的插件类。然后再ready()中调用我们的生成“轮播”的插件函数:

    1 $(document).ready(function(){
    2     $("#test").mySlider();
    3 });

    这样,刷新页面后我们就生成了,和上一篇博文中一模一样的自定义控件了。

    通过这三篇博文,我们完成了一个轮播切换功能的编写。

    写的不好,献丑了。

  • 相关阅读:
    codeblocks 缺少dll libstdc++-6.dll and so on
    gtx 1650 inspiron 1501 pytouch env
    python串口通信
    devops tools
    mosquitto 消息持久化到file
    Mybatis mapper动态代理的原理详解(转)
    Java @Repeatable(转)
    Linux进阶教程丨第10章:管理网络
    CTF-Pwn丨栈溢出入门题目思路解析
    白帽专访丨月神:我的The loner安全团队
  • 原文地址:https://www.cnblogs.com/webARM/p/3781806.html
Copyright © 2011-2022 走看看