千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 一看就会的jQuery插件实现方法

一看就会的jQuery插件实现方法

来源:千锋教育
发布人:wjy
时间: 2022-06-06 13:55:00 1654494900

插件是对具体业务逻辑的一个针对性封装,在代码层面,就是一个函数或者方法,按需调用。jQuery里提供了两种两种类型的插件实现方法。一个是扩展jQuery类方法,一个是扩展jQuery实例方法。

一看就会的jQuery插件实现方法

## jQuery类方法的扩展(jQuery.extend())

类方法是就jQuery自身的方法,如果foo是jQuery自身方法,就可以这样调用$.foo();实现起来也超级简单的,就跟平常给一个对象添加方法一样:

```js
jQuery.foo = function(){
    console.log("我是jQuery类方法foo");
}
jQuery.foo();
```

在jQuery里,专门提供了用于扩展类方法的写法jQuery.extend(),可以一次扩展多个方法,用法如下:

```js
$.extend({
   fn1: function () {},
   fn2: function () {},
  });
 $.fn1();
 $.fn2();
 $.fn3(); //报错
```

## jQuery实例方法的扩展(jQuery.fn.extend())

实例方法就是jQuery实例对象访问的方法,我们知道,按照面向对象对象设计思想,实例访问的方法通常是放到原型对象prototype上的。jQuery提供的用于扩展实例方法的写法是$.fn.extend(),这就意味着有这样一个等式关系成立:

```js
jQuery.prototype === $.fn //true
```

所以我们只需把扩展的方法写到$.fn.extend()的小括号里即可:

```js
$.fn.extend({
    fn1:function(){},
    fn2:function(){}
})
//jquery实例对象$("div")访问情况
$("div").fn1();
$("div").fn2();
$("div").fn3(); //报错
```

对jQuery实例方法的扩展,有一个需要我们注意的地方,就是参数。大家知道,参数的设计分为三种情况,那就是不带参数,必传参数,可选参数。接下来我们以一个高亮显示的例子给大家演示下。

```text
<!-- html结构 -->
<div>高亮显示</div>
```

不带参数

```js
$.fn.extend({
    highLight() {
        //让实例对象的背景颜色和文字颜色发生改变
        //highLight是一个原型方法,this表示的是实例
        this.css({ "background-color": "yellow", color: "red" });
        return this;//形成链式调用
    },
});
$("div").highLight().width("500px");//黄底红字宽500
```

必传参数

```js
$.fn.extend({
    highLight(bgColor, color) {
        this.css({ "background-color": bgColor, color });
        return this;
    },
});
$("div").highLight("blue", "white").width("500px");//蓝底白字宽500
```

可选参数,意思就是不传就用默认的,传参就用自定义的,

```js
//多个参数逐一列出
$.fn.extend({
    highLight(bgColor = "yellow", color = "red") {
        this.css({ "background-color": bgColor, color });
        return this;
    },
});
$("div").highLight(); //黄底红字
$("div").highLight("blue"); //蓝底红字
$("div").highLight("blue", "white"); //蓝底白字
//一个参数对象
$.fn.extend({
    highLight(opts) {
        let defaults = { bgColor: "yellow", color: "red" }; //默认值
        //取到实际的值 options
        let options = $.extend({}, defaults, opts);//将一个或多个源对象复制给目标对象
        this.css({
            "background-color": options.bgColor,
            color: options.color,
        });
        return this;
    },
});
$("div").highLight();//黄底红字
$("div").highLight({ bgColor: "blue"});//蓝底红字
$("div").highLight({ bgColor: "blue", color: "white" });//蓝底白字
```

怎么样,是不是炒鸡简单~~~

更多关于web培训的问题,欢迎咨询千锋教育在线名师。千锋教育拥有多年IT培训服务经验,采用全程面授高品质、高体验培养模式,拥有国内一体化教学管理及学员服务,助力更多学员实现高薪梦想。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT