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 });

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

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

    写的不好,献丑了。

  • 相关阅读:
    随笔2
    随笔
    关于updateElement接口
    随笔1
    本地访问正常,服务器访问乱码 记录
    Redis (error) NOAUTH Authentication required.解决方法
    tomcat启动很慢 停留在 At least one JAR was scanned for TLDs yet contained no TLDs.
    微信公众号消息回复
    微信公众号 报token验证失败
    idea中web.xml报错 Servlet should have a mapping
  • 原文地址:https://www.cnblogs.com/webARM/p/3781806.html
Copyright © 2011-2022 走看看