jQuery插件篇

jQuery插件的作用:完善、扩充jQuery库中的功能.
比如用于创建自定义动画的函数animate并没有提供颜色改变的功能。我们便可以引入一个简单的颜色插件如jquery.animate-colors.js
引用顺序如下

<script src="js/jquery-3.1.0.js"></script>
//必须要在jquery之后引用,以防插件中获取不到一些jQuery方法
<script src="js/jquery.animate-colors.js"></script>
<script type="text/javascript">
$(function(){   
//引入之后我们便可以自定义颜色改变的动画了  
$("#div1").animate({backgroundColor:"pink"},3000);
})
</script>

在插件开发前先介绍一个jQuery工具

$.extend([d],tgt,obj1,[objN])

用一个或多个其他对象来扩展一个对象,返回被扩展的对象。

举例

var obj1 = {
             name: 'Jay',
             age: 88
}
var obj2 = {
             name: 'yxt',
             size: 100
}
            
// 使用extend()方法合并多个对象:会把多个对象的属性合并在第一个对象里,并返回。如果有同名属性,则属性值是最后一个对象的值
var obj = $.extend(obj1, obj2);
console.log(obj);//age:88 name:"yxt" size:100
console.log(obj1);//age:88 name:"yxt" size:100
//可以看出obj1被修改了
怎么才能不修改呢?
只需在传参的时候 前置一个空对象
var obj = $.extend({},obj1, obj2);
console.log(obj1);//age:88 name:"Jay"
使用extend给jQuery扩展新功能.

参数类型是一个对象,属性名就是新方法的名字,属性的值就是新方法的功能函数

//通过$.extend()向jQuery添加了一个sayHello函数,
//然后通过$直接调用。这就算是一个小插件
$.extend({sayHello: function(name){
        console.log('hello' + (name ? name : 'World'));
            }
});
$.sayHello();//helloWorld
$.sayHello("Jay");//helloJay

下面自定义console,输出特定格式的信息,定义一次后可以通过jQuery在程序中任何需要的地方调用它。

$.extend({
        log: function(message){
        // 1、获取到当前的年月日、时分秒
        var now = new Date(),
        y = now.getFullYear(), // 年
        m = now.getMonth()+1,    // 月
        d = now.getDate(),     // 日
        h = now.getHours(),    // 时
        min = now.getMinutes(),  // 分
        s = now.getSeconds(),   // 秒
        time = y+"/"+m+"/"+d+" "+h+":"+min+":"+s;
        console.log(time + message);
        }
});
$.log("飘移青春");
//2016/9/12 22:13:49飘移青春

另一种方式的jQuery插件开发

$.fn.方法名 = 方法函数
//给jQuery添加一个新插件,传入颜色关键字,让标签字体变色
$.fn.setColor = function(color) {   
// this 指代的是当前调用者,也就是方法操作的jQuery对象
// 当插件内部调用了jQuery方法实现功能时,
//可以直接把操作函数返回出去, 
//因为jQuery中的方法执行完毕后会返回这个操作对象,
//也就间接的把当前操作的对象返回出去。
//如果没有使用jQuery来实现功能,则需要手动把this指针返回出来
// 我们把操作对象返回出去的目的是
//为了让自定义的插件能够像jQuery方法那样支持链式语法
        return  this.css('color', color);
}

jQuery里有链式操作

链式操作仅仅是通过对象上的方法最后 return this

例:取出a标签中的href属性的值,然后显示在a标签中
$.fn.readHref = function (){
// .each(function):遍历调用者的数据方法
    return this.each(function(){
       $(this).append(':' + $(this).attr('href'));
  })
}
//注意 这里 this的指向 以及 return语句是为了支持链式调用            
让插件支持传参
// 通过传递一个对象,包含color属性及fontSize属性来修改便签的 
//字体颜色和字号
$.fn.setFont = function(option) {
// 定义一个对象,当没有传参时,字体的样式就是这个对象里保存的样式
var defaultStyle = {
  color: 'black',
  fontSize: '16px'
}
// 判断当前有没有参数,有则用参数中的样式,没有则用默认样式
var setting = $.extend({},defaultStyle, option);
// 修改当前标签的CSS样式
  return this.css({
            'color': setting.color,
            'fontSize': setting.fontSize
});
}

    // 调用setFont插件实现修改字体效果
    $('p').setFont({color: 'red'});

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文链接 http://blog.poetries.top/2016/10/20/review-jQuery 关注...
    前端进阶之旅阅读 16,686评论 18 503
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,394评论 0 2
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,203评论 0 1
  • 在线阅读 http://interview.poetries.top[http://interview.poetr...
    前端进阶之旅阅读 114,898评论 24 450
  • Python网络数据采集4-POST提交与Cookie的处理 POST提交 之前访问页面都是用的get提交方式,有...
    sunhaiyu阅读 1,018评论 0 1