jQuery实现轮播切换以及将其封装成插件(3)
在前两篇博文中,我们写了一个普通的轮播切换。但是我们不能每一次需要这个功能就把这些代码有重新敲一次。下面我们就将它封装成一个插件。
至于什么是插件,又为什么要封装插件,不是本文考虑的内容。
我们趁着刚才的思路还在,直接开始写。
一、jQuery插件的基本结构:
我只介绍本例中用到的一种插件:
(function($){
$.fn.extend({
"插件函数名(随意)":function(){
//函数内容
}
});
})(jQuery);
二、要做哪些准备
按照我的个人习惯。首先需要前面博文中我们写的html代码作为模板。使用jQuery动态生成它。
然后将涉及到的CSS式样,放入单独的文件。最后将js函数放入上面的插件函数中,作为函数中的函数。
;(function($){
$.fn.extend({
"mySlider":function(){
if(!this.hasClass("gr_UI_sliderBox")){
console.log("this dom not have class gr_UI_sliderBox");
return;
}
//be sure only once and add ul.
var $sliderUl = this.find("ul");
if($sliderUl.length>=1){
return;
}
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>");
$(this).append($add);
function moveByIndex(index){
$(".gr_UI_sliderBox ul.img_ul li.slider_current").removeClass("slider_current");
$(".gr_UI_sliderBox ul.img_ul li:eq(" + index + ")").addClass("slider_current");
var move_x = -index * 800;
var str_m_x = move_x + "px";
var $sliderUl = $(".gr_UI_sliderBox ul.img_ul");
$sliderUl.animate({left: str_m_x}, "slow");
$(".gr_UI_sliderBox ul.btn_ul li:eq(" + index + ")").addClass("current_btn").siblings().removeClass("current_btn");
}
function s_Run(){
var newCurrentIndex = $(".gr_UI_sliderBox ul.img_ul li.slider_current").index() + 1;
var liCount = $(".gr_UI_sliderBox ul.img_ul li").length;
if(newCurrentIndex >= liCount){
newCurrentIndex = 0;
}
console.log("new index : " + newCurrentIndex + " length : " + liCount);
moveByIndex(newCurrentIndex);
}
}
});
这样,我们就可以通过mySlider函数动态生成轮播切换。
但是,就以目前的代码,是不包括事件的。注意在插件函数中是不能使用ready()的。我们可以自己初始化,并且绑定事件和函数。
//init
var tCtr;
$(".gr_UI_sliderBox ul.img_ul li:eq(0)").addClass("slider_current");
$(".gr_UI_sliderBox ul.btn_ul li:eq(0)").addClass("current_btn");
//绑定事件
$(".gr_UI_sliderBox ul.btn_ul li").bind({
mouseenter:function(){
clearTimeout(tCtr);
moveByIndex($(this).index());
},
mouseleave:function(){
tCtr = setInterval(s_Run, 2000);
} }); tCtr = setInterval(s_Run, 2000);
我们完成了插件的编写,但是我们要如何使用呢?
下面我们来调用它。
我们将所需要的文件(插件.js和插件.css)配置到工程中。在需要使用的地方定义一个<div></div>
<div class="gr_UI_sliderBox" id="test"></div>
在上面的代码中,gr_UI_sliderBox就是我们的插件类。然后再ready()中调用我们的生成“轮播”的插件函数:
$(document).ready(function(){
$("#test").mySlider();
});
这样,刷新页面后我们就生成了,和上一篇博文中一模一样的自定义控件了。
通过这三篇博文,我们完成了一个轮播切换功能的编写。
写的不好,献丑了。
jQuery实现轮播切换以及将其封装成插件(3)的更多相关文章
- jQuery实现轮播切换以及将其封装成插件(1)
我们在网上经常会看到一些轮播切换的效果.轮播切换,就是在一个有限的空间中定时的像走马灯一样去播放一组图片,当然也可以通过鼠标悬停在小按钮上来切换显示.下面我们将一步一步的实现这一效果. 为保证效果,请 ...
- jQuery实现轮播切换以及将其封装成插件(2)
在上一篇博文中,我们完成了一个简单的轮播切换.它的功能比较简单,仅仅能定时切换图片. 但是有没有这样一种情况.当我们特意的想看某一个轮播显示项时不希望等轮播一圈才能等到,希望通过图上的一些元素,触发某 ...
- 一款基于jQuery轮播切换焦点图,可播放多张图片
今天给大家分享一款基于jQuery轮播切换焦点图,可播放多张图片,在这个组件中,你可以任意指定8张图片,然后插件就会帮你自动生成缩略图,并且自动开始切换播放图片.当然,你也可以手动切换图片,只要点击缩 ...
- 基于jquery带时间轴的图片轮播切换代码
基于jquery图片标题随小圆点放大切换.这是是一款带时间轴的图片轮播切换代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div id="decoroll2 ...
- jQuery - 广告图片轮播切换
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 12款经典的白富美型—jquery图片轮播插件—前端开发必备
图片轮播是网站中的常用功能,用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果.本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美 ...
- 3D轮播切换特效 源码
这个3D轮播切换特效是我2017年2月份写的 当初我 刚接触HTML不久,现在把源码分享给大家 源码的注释超级清楚 . <!-- 声明文档类型:html 作用:符合w3c统一标准规范 每个浏览器 ...
- 用js和jQuery做轮播图
Javascript或jQuery做轮播图 css样式 <style> a{ text-decoration:none; } .naver{ width: 100%; position:r ...
- CSS+jQuery实现轮播
CSS+jQuery实现轮播 CSS jQuery 前端 实现功能: 自动轮播: 鼠标放在上面停止轮播: 鼠标放在上面显示左右切换的按钮: 鼠标放在小圆圈上显示对应的图片: 轮播效果图 style. ...
随机推荐
- IDEA修改git账号及密码的方法
IDEA修改git账号及密码的方法: 1.file->settings->passwords 2.重启IDEA 3.执行一次提交或更新 当执行提交或更新之后,idea会自动提示输入账号.密 ...
- CSS十问——好奇心+刨根问底=CSSer(转)
最近有时间,想把酝酿的几篇博客都写出来,今天前端小学生带着10个问题,跟大家分享一下学习CSS的一些体会,我觉得想学好CSS,必须保持一颗好奇心和刨根问底的劲头,而不是复制粘贴,得过且过.本人能力有限 ...
- Murano Application
OpenStack Application Link: http://apps.openstack.org/ Those applications include Murano packages, H ...
- Murano Weekly Meeting 2015.08.04
Meeting time: 2015.August.4th 1:00~2:00 Chairperson: Serg Melikyan, PTL from Mirantis Meeting summa ...
- (转)blkid命令 获取文件系统类型、UUID
blkid命令 获取文件系统类型.UUID 原文:http://www.cnblogs.com/dkblog/archive/2011/08/30/2159630.html 在Linux下可以使用b ...
- 转:MVC中的文件上传
上传文件与与上传数据区别 上传数据主要指json等简单字符串,上传文件指的是上传word.excel图片等.在上传数据的时候enctype默认为第一个application/x-www-form-ur ...
- jquery validation yyyy-MM-dd格式日期在ie中无法验证通过
自己开发的公众号,可以领取淘宝内部优惠券 问题 首先在ie6.7.8下面打开这个页面http://jqueryvalidation.org/date-method/,输入的日期格式为:yyyy-MM- ...
- Flex Validator的小BUG
Flex中对同一控件如TextInput进行多种格式校验的情况下,如不注意,可能导致错误信息不显示的BUG,比如 <fx:Array id="validators"> ...
- .Net程序员学习Linux最简单的方法(转载)
有很多关于Linux的书籍.博客.大多数都会比较“粗暴“的将一大堆的命令塞给读者,从而使很多.NET程序员望而却步.未入其门就路过了. 所以我设想用一种更为平滑的学习方式, 就是在学习命令时,先用纯语 ...
- php静态变量static
静态变量 function test() { static $a = 0; echo $a; $a++; } test(); test(); test();