jQuery基础——开发插件

写在前面

参考文献:莫振杰《从0到1:jQuery快速上手》

啥叫插件?怎么开发?插件有啥用?

下面一一解答。

JQ插件介绍

JQ插件,其实就是使用JQ来封装的一个功能或者特效。

啥时候特效?就是动画咯。

JQ插件本质上就是一个js文件而已,所以说引入很简单——在html文件上,通过Script标签引入即可。

当然了,你需要注意引入顺序——先是JQ库文件,然后才是你的插件,或者是其他在网上下载的插件。

如果引入顺序出现了错误,会出现bug。

为什么要先引入JQ库文件?

因为浏览器解析html文件是从上往下执行的,JQ插件本身就是通过JQ写的,如果你的库文件没有先被解析,那你的JQ插件就没有效果了。

为什么要开发插件?

因为JQ插件本身的冗余代码很多,性能可能不够。

自己开发的,一般都是针对于某个功能的。

关于命名

命名其实很简单,跟JS库文件类似即可。

jquery.[插件名].js

JQ常用插件

既然都是常用的插件了,那这肯定不是我们自己写的。

下面介绍几个非常好用的插件。

文本溢出:dotdotdot.js

什么是文本溢出效果?

其实很简单理解,dot就是“点”的意思,三个dot不就是“...”的意思吗?非常的形象生动。

其实这个效果,不需要JQ插件也是可以做到类似的。

只不过,使用CSS写的效果,只能应用在单行文本上,不能用于多行文本,而这个插件则是允许多行文本。

CSS写的:

overflow: hidden
white-space: nowrap
text-overflow: ellipsis

怎么使用这个JQ插件?

其实很简单:先引入这个插件,然后再使用。

语法:$().插件名()

$()是用来选取DOM元素的,使用插件其实就是把插件看作是一个方法即可。

疑惑:我这段落文本是不是每行都有“...”的效果?

其实不是,只是最后一行有这个效果。

延迟加载:lazyload.js

什么是延迟加载?

其实就是懒加载,一般都是懒加载图片,不会说懒加载别的内容。

懒加载效果就是,一个页面,一般是很长的,如果你从一开始开起来,如果你没有到某个图片,那这个图片就先不显示,当你刷到这里的时候,我才开始加载给你看。

使用这个效果有什么好处?

那就是降低后台压力,毕竟不是所有人都需要看到最后的。

如果每一次进入页面都全部加载,后台压力要炸了。

而且这也有利于提高用户使用体验,因为加载的东西少了,用户打开网页也更快了,性能也更好了。

使用步骤:

1.引入JQ插件——lazyload.js。

2.图片的src属性用data-original代替,也就是属性值不变,把src改为data-original即可。

3.添加JQ代码:

$().lazyload({ effect: "fadeIn" })

注意:这里的$()选取的DOM元素是网站展示图片的元素,也就是img元素。

fadeIn是嘛呀?

不就是之前学到的JQ动画中的淡入效果嘛。

复制粘贴:zclip.js

实话说,我不知道这个有啥用。

所以不说。

表单验证:validate.js

这个很好用,讲这个吧。

步骤其实就两个,引入和使用。

1.引入JQ插件,但是这里的插件有两个:validate.js和message_zh.js。

2.添加JQ代码:

$().validate({
    // 自定义验证规则
    rules: {
        ...
    }
})

这个跟vue中使用的差不多。

rules里面添加的验证规则写法:对象的形式:

rules: {
    name: { required: true, maxlength: 6 },
    password: { required: true, maxlength: 20 }
}

这里的name/password都是input中的name属性。

注意:一般只有表单元素有name属性。

required是必选,还是可选的意思,true是必选,false是可选。

maxlength直译即可,max最大,length长度,合起来就是最大长度。

JQ插件

现在介绍一下JQ插件的分类。

一般来说,JQ插件分为:

方法类插件

函数类插件

这里说的都是常用的,不常用的,我去掉了。

方法类插件

什么是方法类插件?

其实先使用JQ选择器来选取一个DOM元素,从而获取一个JQ对象,然后再给这个获取到的JQ对象添加一个方法:

定义语法:

(function($){
    $.fn.extend({
        "插件名": function(参数) {
            ...
        }
    })
})(jQuery)

为什么要加上立即执行函数?

是因为防止“$”变量污染,其实所有插件都可以使用这个立即执行函数。

使用语法:

$().函数名(参数)

这个跟内置方法的语法是差不多的。

可以看出来,所谓的“封装JQ插件”,其实就是把功能封装成一个函数而已。

按照这个逻辑,你其实还可以使用:

(function($){
    $.fn.插件名 = function(参数){ ... }
})(jQuery)

其实这种还有个不是那么好的点,那就是传参不是很OK。

其实我们可以把参数改为一个对象,使用对象传值也是OK的:

(function($){
    $.fn.extend({
        "插件名": function(options) {
            $().css({ "color": options.color })
        }
    })
})(jQuery)

当然啦,如果你想要设置默认值也是OK的。

只需要在function内部定义一个默认值就OK了。

也可以同时封装多个JQ插件。

函数类插件

函数类插件在语法上跟方法类插件其实是差不多的。

定义语法:

(function($){
    $.extend({
        "插件名": function() {
            ...
        }
    })
})(jQuery)

你就说,是不是差不多的?

怎么区别?

看看有没有fn,有没有参数即可。

不是,怎么跟工具函数好像长得一毛一样?

其实工具函数本身就是函数类插件,这两个是一样的,只是叫法不一样。

使用上是一样的,这里不展开。

总结

1.插件的命名最好是按照jquery.[插件名].js或者jquery.[插件名].min.js的格式。

2.在插件的最后必须使用return $(this)来返回当前JQ对象,以便保持链式调用的功能。

3.无论是啥插件,定义的结尾都要使用分号结尾,否则压缩后可能会出现错误。

4.我们常说的JQ插件,指的都是方法类插件。

5.$.extend()方法是在JQ全局对象上扩展的一个方法,而$.fn.extend()方法是在选择器上扩展的一个方法。所以定义工具函数应该用$.extend()方法,定义JQ插件应该用$.fn.extend()方法。

写在最后

OK,本期就这么多内容。

都是很细,没啥难度的内容。

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值