下面我用原生 jQuery 写一个简单轮播图插件为例,一步一步说明jQuery 插件是如何实现的,你照着理解就能自己扩展。
一个轮播图插件通常包含:
<div class="slider" id="mySlider">
<ul class="slider-list">
<li><img src="1.jpg"></li>
<li><img src="2.jpg"></li>
<li><img src="3.jpg"></li>
</ul>
</div>
.slider {
width: 600px;
height: 300px;
overflow: hidden;
position: relative;
}
.slider-list {
width: 9999px;
padding: 0;
margin: 0;
list-style: none;
}
.slider-list li {
float: left;
width: 600px;
}
(function ($) {
$.fn.slider = function (options) {
// 默认参数
var settings = $.extend({
speed: 500,
interval: 3000
}, options);
return this.each(function () {
var $slider = $(this);
var $list = $slider.find('.slider-list');
var $items = $list.children();
var width = $slider.width();
var index = 0;
// 自动轮播
function play() {
setInterval(function () {
index++;
if (index >= $items.length) {
index = 0;
}
$list.animate({
marginLeft: -width * index
}, settings.speed);
}, settings.interval);
}
play();
});
};
})(jQuery);
<script src="jquery.min.js"></script>
<script src="slider.js"></script>
<script>
$(function () {
$('#mySlider').slider({
speed: 600,
interval: 2000
});
});
</script>
$.fn$.fn.slider = function () {}
$.fn 是 jQuery 原型.slider()return this.each()return this.each(function () {})
$.extend$.extend({}, options)
你可以继续加:
例如加“悬停暂停”:
$slider.hover(function () {
clearInterval(timer);
}, function () {
play();
});
jQuery 插件 = 封装 DOM 操作 + 可配置参数 + 链式调用
如果你愿意,我可以:
你想往哪一步走?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。