全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

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

发布时间:2022-06-06 13:55:00
发布人:wjy

插件是对具体业务逻辑的一个针对性封装,在代码层面,就是一个函数或者方法,按需调用。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培训服务经验,采用全程面授高品质、高体验培养模式,拥有国内一体化教学管理及学员服务,助力更多学员实现高薪梦想。

相关文章

企业抖音小店保证金是多少

企业抖音小店保证金是多少

2023-10-08
抖音怎么弄抖音小店店铺

抖音怎么弄抖音小店店铺

2023-10-08
抖音小店怎么设置新人券领不到

抖音小店怎么设置新人券领不到

2023-10-08
开通抖音小店的保证金在哪里退

开通抖音小店的保证金在哪里退

2023-10-08

最新文章

上海物联网培训一般费用多少

上海物联网培训一般费用多少

2023-09-12
北京物联网培训费用大概多少

北京物联网培训费用大概多少

2023-09-12
北京物联网培训需要费用高不高

北京物联网培训需要费用高不高

2023-09-12
上海效果好的物联网培训费用高吗

上海效果好的物联网培训费用高吗

2023-09-12
在线咨询 免费试学 教程领取