虽然现在jQuery只在老项目中使用了,但是这个曾经辉煌一时,解决了很多浏览器兼容性问题,拯救了大部分程序员头发的库,还是非常伟大的,它的思想还值得学习。
这里分享一个自定义jQuery插件的小案例,以后遇到需要剥离出来的代码,就可以通过这种方式完成。
点击舞台产生随机的图形,可以自由配置几个参数。自定义插件的套路差不多就这样的。
点击图片试试……
核心代码:
<div class="box">
<!-- <div class="ball"></div> -->
</div>
<script src="js/jquery.js"></script>
<script src="js/addBall.js"></script>
<script>
// 每次点击就添加一个元素在舞台上
$('.box').on('click', function (e) {
const num = getRandom(20, 100);
// 调用自己写的方法,传递需要的参数
$(this).addBall({
width: num,
height: num,
borderRadius: `${getRandom(20, 50)}px`, // 需要带单位
backgroundColor: `rgba(${getRandom(80,255)},${getRandom(80,255)},${getRandom(80,255)})`,
// 鼠标点击的x和y坐标
x: e.clientX,
y: e.clientY
});
})
function getRandom(min, max){
return Math.floor(Math.random()*(max - min + 1) + min);
}
</script>// addBall.js
;(function($){
// 为jquery添加一个自己的方法
$.fn.addBall = function (options) {
// 默认参数
const defaults = {
width: 50,
height: 50,
borderRadius: '50%',
backgroundColor: '#f60',
// 谁调用这个函数,谁就是this
x: Math.random()*$(this).width(),
y: Math.random()*$(this).height(),
}
// 把用户的参数和默认的参数合并,当有冲突时,后面的覆盖前面的,最后返回前面参数对象.
const result = $.extend(defaults, options);
// console.log(result == defaults); // true
const $Div = $(`<div class="ball" style = "width:${result.width}px;height:${result.height}px;border-radius:${result.borderRadius};left:${result.x - result.width / 2}px;top:${result.y - result.height / 2}px;position:absolute;background-color:${result.backgroundColor}"></div>`);
$Div.appendTo($(this));
$Div.on('click', function (e) {
// 点击产生的形状时删除并阻止冒泡产生新的形状
$(this).remove();
e.stopPropagation();
})
// 返回调用该函数的对象,可以实现链式调用
return $(this);
}
})(jQuery);
发表评论:
◎请发表你卖萌撒娇或一针见血的评论,严禁小广告。