jQuery实现轮播切换以及将其封装成插件(3)
2024-09-05 20:10:48
在前两篇博文中,我们写了一个普通的轮播切换。但是我们不能每一次需要这个功能就把这些代码有重新敲一次。下面我们就将它封装成一个插件。
至于什么是插件,又为什么要封装插件,不是本文考虑的内容。
我们趁着刚才的思路还在,直接开始写。
一、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();
});
这样,刷新页面后我们就生成了,和上一篇博文中一模一样的自定义控件了。
通过这三篇博文,我们完成了一个轮播切换功能的编写。
写的不好,献丑了。
最新文章
- selenium 总结篇,常见方法和页面元素的操作
- [转]细说Redis监控和告警
- Hbase预分区种子生成
- WTF,这到底是在做什么?
- Laravel 部署安装到虚拟主机的方法(折腾了一周,终于成功部署,原来是虚拟机不加载.env,谢谢莫回首http://lxl520.com/index.php/archives/88/!)
- 浅谈我眼中的ASP.NET MVC
- 获取SilverLight.Web项目中路径Uri
- struts2+ajax
- Android自动化测试之环境搭建
- python正则详解
- kettle 备注
- leecode.147. 对无头结点链表进行插入排序
- mac配置自带vim高亮显示
- python 往mysql数据库中插入多条记录。
- for或者while的标记循环
- <;转载>; nginx服务器安装及配置文件详解 https://segmentfault.com/a/1190000002797601
- docker 搭建 MYSQL并且完成主从复制
- 人民币-欧元预测(ARIMA算法)代码
- Python之旅:MySQL系列
- webshpere 节点&;环境分析
热门文章
- robot framework 的AutoItLibrary常用关键字
- Android NDK开发 图片处理(五)
- 打开/关闭网卡无线WIFI模块
- HDU 5360——Hiking——————【贪心+优先队列】
- HDU 5371——Hotaru&#39;s problem——————【manacher处理回文】
- php7.0.24-nts配置步骤
- 动态行转列 pivot实现
- Maven,SVN,快捷键,数据库等
- Python常用模块(二)
- 【工作中学习】CreateProcessAsUser失败,错误码:1314