jQuery插件开发代码

方法和原理在这篇博文中非常详细易懂 http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html

下面整理下基本知识点和基本的代码段:

jQuery插件开发方式主要有三种:

  1. 通过$.extend()来扩展jQuery
  2. 通过$.fn 向jQuery添加新的方法
  3. 通过$.widget()应用jQuery UI的部件工厂方式创建

extend()的作用和用法

extend()中可以传入一个或多个对象,依次往前覆盖,最终第一个对象会添加到jQuery自身,直接看代码:

$.extend({
    sayHello: function(name) {
        console.log(‘Hello,‘ + (name ? name : ‘Dude‘) + ‘!‘);
    }
})
$.sayHello(); //调用
$.sayHello(‘Wayou‘); //带参调用

extend()会在第二种方法中用来传入参数

一个基本的插件编写方式

js:

$.fn.pig = function(options){
    var defaults = {
        ‘color‘ : ‘red‘,
        ‘fontsize‘ : ‘12px‘
    };
    var settings = $.extend({}, defaults, options);
    this.css({
        ‘color‘: settings.color,
        ‘font-size‘: settings.fontsize
    });

    return this.each(function(){
        $(this).append(‘ ‘ + $(this).attr(‘href‘));
    })
}

html:

<ul>
    <li>
        <a href="http://www.baidu.com/">百度</a>
    </li>
    <li>
        <a href="http://www.google.com/">谷歌</a>
    </li>
    <li>
        <a href="http://www.360.com/">360</a>
    </li>
</ul>
<p>我是PPP</p>
<script type="text/javascript">
$(function() {
    $(‘a‘).pig({
        ‘color‘: ‘#2c9929‘
    });
})
</script>

上面的代码,已经可以让使用者传入对象或不传对象,能编写出健壮而灵活的插件了。

但是,当插件内容复杂时,代码面临组织问题,可以用面向对象的思维来做:

面向对象的插件开发

js定义对象后调用,然后包裹自调用匿名函数防止污染全局变量

(function() {
    //定义Beautifier的构造函数
    var Beautifier = function(ele, opt) {
            this.$element = ele,
                this.defaults = {
                    ‘color‘: ‘red‘,
                    ‘fontSize‘: ‘12px‘,
                    ‘textDecoration‘: ‘none‘
                },
                this.options = $.extend({}, this.defaults, opt)
        }
        //定义Beautifier的方法
    Beautifier.prototype = {
            beautify: function() {
                return this.$element.css({
                    ‘color‘: this.options.color,
                    ‘fontSize‘: this.options.fontSize,
                    ‘textDecoration‘: this.options.textDecoration
                });
            }
        }
        //在插件中使用Beautifier对象
    $.fn.pig = function(options) {
        //创建Beautifier的实体
        var beautifier = new Beautifier(this, options);
        //调用其方法
        return beautifier.beautify();
    }
})();

html不变

<ul>
    <li>
        <a href="http://www.baidu.com/">百度</a>
    </li>
    <li>
        <a href="http://www.google.com/">谷歌</a>
    </li>
    <li>
        <a href="http://www.360.com/">360</a>
    </li>
</ul>
<p>我是PPP</p>
<script type="text/javascript">
$(function() {
    $(‘a‘).pig({
        ‘color‘: ‘#2c9929‘
    });
})
</script>

目前为止似乎接近完美了。

如果再考虑到一些潜在的问题,那么balabalabala,最后是这个样子:

;(function($, window, document,undefined) {
    //定义Beautifier的构造函数
    var Beautifier = function(ele, opt) {
        this.$element = ele,
        this.defaults = {
            ‘color‘: ‘red‘,
            ‘fontSize‘: ‘12px‘,
            ‘textDecoration‘: ‘none‘
        },
        this.options = $.extend({}, this.defaults, opt)
    }
    //定义Beautifier的方法
    Beautifier.prototype = {
        beautify: function() {
            return this.$element.css({
                ‘color‘: this.options.color,
                ‘fontSize‘: this.options.fontSize,
                ‘textDecoration‘: this.options.textDecoration
            });
        }
    }
    //在插件中使用Beautifier对象
    $.fn.myPlugin = function(options) {
        //创建Beautifier的实体
        var beautifier = new Beautifier(this, options);
        //调用其方法
        return beautifier.beautify();
    }
})(jQuery, window, document);

开始写一个自己的jQuery插件吧,发布jQuery插件到github的详细步骤这里也有:http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html

时间: 2024-10-14 07:08:32

jQuery插件开发代码的相关文章

掌握jQuery插件开发

在实际开发工作中,总会碰到像滚动,分页,日历等展示效果的业务需求,对于接触过jQuery以及熟悉jQuery使用的人来说,首先想到的肯定是寻找现有的jQuery插件来满足相应的展示需求.目前页面中常用的一些组件,都有多种jQuery插件可供选择,网络上也有很多专门收集jQuery插件的网站.利用jQuery插件确实可以给我们的开发工作带来便捷,但是如果只是会简单使用,而对其中的原理不甚了解,那么在使用过程中碰到问题或者对插件进行定制开发时就会有诸多疑惑.本文的目的就是可以快速了解jQuery插件

jQuery插件开发精品教程(让你的jQuery更上一个台阶)

刘哇勇的部落格要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈. 学会使用jQuery并不难,因为它简单易学,并且相信你接触jQuery后肯定也使用或熟悉了不少其插件.如果要将能力上升一个台阶,编写一个属于自己的插件是个不错的选择. 本教程可能不是最精品的,但一定是最细致的. jQuery插件开发模式 软件开发过程中是需要一定的设计模式来指导开发

jQuery 插件开发

jQuery插件开发模式 软件开发过程中是需要一定的设计模式来指导开发的,有了模式,我们就能更好地组织我们的代码,并且从这些前人总结出来的模式中学到很多好的实践. jQuery插件开发方式主要有三种: 通过$.extend()来扩展jQuery 通过$.fn 向jQuery添加新的方法 通过$.widget()应用jQuery UI的部件工厂方式创建 通常我们使用第二种方法来进行简单插件开发,说简单是相对于第三种方式.第三种方式是用来开发更高级jQuery部件的,该模式开发出来的部件带有很多jQ

JQuery插件开发精品教程,让你的jQuery提升一个台阶

本文转载自 http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html 要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈. 学会使用jQuery并不难,因为它简单易学,并且相信你接触jQuery后肯定也使用或熟悉了不少其插件.如果要将能力上升一个台阶,编写一个属于自己的插件是个不错的选择.

jQuery插件开发模式

http://www.cnblogs.com/gavin-num1/p/5655126.html jQuery插件开发模式 软件开发过程中是需要一定的设计模式来指导开发的,有了模式,我们就能更好地组织我们的代码,并且从这些前人总结出来的模式中学到很多好的实践. 根据<jQuery高级编程>的描述,jQuery插件开发方式主要有三种: 通过$.extend()来扩展jQuery 通过$.fn 向jQuery添加新的方法 通过$.widget()应用jQuery UI的部件工厂方式创建 通常我们使

jQuery插件开发前准备

[前言] 关于jQuery的插件,网上一搜一大把,一开始在项目中使用别人写的插件的时候,真是佩服的五体投地,调用的时候简简单单的几句代码,就能实现很复杂的功能.那么如何开发自己的插件呢?其实并不难,从简单的开始,一步一步网上添加功能,最后咋们也能写出功能强大的插件. [jQuery插件开发模式] jQuery插件开发模式有三种: (1)通过$.extend()来扩展jQuery 多用于拓展工具方法,比如给一个数组封装一个方法,功能是将其中的重复元素删除:$.removeSameItem([1,1

jQuery插件开发---转载

要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈. 学会使用jQuery并不难,因为它简单易学,并且相信你接触jQuery后肯定也使用或熟悉了不少其插件.如果要将能力上升一个台阶,编写一个属于自己的插件是个不错的选择. 本教程可能不是最精品的,但一定是最细致的. jQuery插件开发模式 软件开发过程中是需要一定的设计模式来指导开发的,有了模式,

跟我一起学JQuery插件开发

http://www.cnblogs.com/Leo_wl/archive/2012/04/06/2435511.html 以前一直比较好奇,jquery插件是怎么开发的,怎么写属于自己的插件? 昨天在逛codeproject网站的时候,突然看到一篇文章:How to write plugin in Jquery. 如果对E文好的同学 ,可以看上面的连接. 现在我把上面网站的及结合自己的想法写这篇文章.希望能得到大牛们的支持和谅解...大鸟飞过...欢迎拍装. 资料来源: [1]How to w

jQuery 插件开发——PopupLayer(弹出层)

导读:上次写了一篇关于GridView的插件开发方法,上几天由于工作需要,花了一天左右的事件封装了popupLayer(弹出层)插件.今天有时间就记录一下自己的开发思想与大家分享下,同时也算是对这段时间的工作概要吧. 就我在开发过程中的理解和开发的经验,一般常用的弹出层有三类(其实还有一类就是弹出可以输入内容的,但是这种可以被替代,所以就特别拿出来写了):Confirm.Alert.LoadContent(url).其中Alert又可以分成五种(当然也可以是四种),分别是: "error&quo