`

编写jquery插件

阅读更多
本文讲下开发jquery插件必须应有的要求。
1、在JQuery命名空间下声明只声明一个单独的名称
2、接受options参数,以便控制插件的行为
3、暴露插件的默认设置 ,以便外面可以访问
4、适当地将子函数提供给外部访问调用
5、保持私有函数
6、支持元数据插件

那么下文一一来解析。
只声明一个单独的名称
这表明是一个单独的插件脚本。如果你的脚本包含多个插件或者是互补的插件(像$.fn.doSomething()和$.undoSomething()),那么你可以根据要求声明多个名称。但一般情况下,力争用单一的名称来维持插件现实的所有细节。
在本例中,我们将声明一个叫“hilight”的名称
// 插件的定义$.fn.hilight = function( options ){    // 这里就是插件的实现代码了...    };
然后我们可以像这样调用它:
$("divTest").hilight();
接受一个options参数,以便控件插件的行为
$.fn.hilight = function(options){
    var defaults = {
        foreground    :    'red',
        background    :    'yellow'
    };
    //Extends out defaults options with those privided 扩展我们默认的设置
    $.extend(defaults,options);
};
而我们可以这样使用它:
$('#myDiv').hilight({
  foreground: 'blue'
});

暴露插件的默认设置 ,以便外面可以访问
作为插件的提升和优化,我们应该将上面的代码暴露出来作为插件的默认设置。
这非常重要,这样做让使用插件的用户可以非常容易地用最少的代码重写或自定义该插件。然而这个我们可以借助JavaScript function对象的优势:
$.fn.hilight = function(options){
    //Extend our default options with those provided
    //Note that the first arg to extend is an empty object
    //this is to keep from overriding our "defaults" object
    var opts = $.extend({},$.fn.hilight.defaults,options);
}
$.fn.hilight.defaults = {
    foreground    :    'red',
    background    :    'yellow'
};

这里值得注意的是$.extend()第一个参数是一个空的对象,这样可以让我们重写插件的默认设置
用户可以像这样使用插件:
// override plugin default foreground color
$.fn.hilight.defaults.foreground = 'blue';
// ...
// invoke plugin using new defaults
$('.hilightDiv').hilight();
// ...
// override default by passing options to plugin method
$('#green').hilight({
  foreground: 'green'
});

适当地将子函数提供给外部访问调用
这个例子延续前面的例子,你会发现有一个有趣的方法可以扩展你的插件(然后还可以让其他人扩展你的插件)。例如,我们在插件里声明了一个函数叫“format”用来高这显示文本,我们的插件实现代码可能是这样子的:
$.fn.hight = function(options){
    //iterate and reformat each mached element
    return this.each(function(){
        var $this = $(this);
        //...
        var markup = $this.html();
        //call our format function
        markup = $.fn.hilight.format(markup);
        $this.html(markup);
    });
};
//define our format function
$.fn.hilight.format = function(txt){
    return '<strong>'   txt   '</strong>';
};

保持私有函数
暴露插件有部分内容提供重写看上去似乎非常强大,但是你必须认真地考虑你的插件哪一部分是需要暴露出来的。一旦暴露出来,你就需要考虑这些变化点,一般情况下,如果你没有把握哪部分需要暴露出来,那么你可以不这样做。
那如何才能够定义更多的函数而不将其暴露出来呢?这个任务就交给闭包吧。为了证实,我们在插件中添加一个函数叫“debug”,这debug函数将会记录已选择的元素数量到FireBug控制台中。为了创建闭包,我们将插件定义的整部分都包装起来:
//create closure
(function($){
    //plugin definition
    $.fn.hilight = function(options){
        debug(this);
        //...
    };
    //private function for debuggin
    function debug($obj){
        if(window.console && window.console.log){
            window.console.log('hilight selection count :'   $obj.size());
        }
    }
    //...
    //end of closure
})(jQuery);

这样“debug”方法就不能被闭包这外调用了
支持元数据插件
依赖于所写的插件类型,并支持元数据插件会使得其本身更加强大。个人来讲,我喜欢元素据插件,因为它能让你分离标签中重写插件的配置(这在写demo和示例时特别有用)。最重要的是,想现实它特别的容易!
$.fn.hilight = function(options){
    //build main options before element interation
    var opts = $.extend({},$.fn.hilight.defaults,options);
    return this.each(function(){
        var $this = $(this);
        //build element specific options
        var o = $.meta ? $.extend({},opts,$this.data()) : opts;
         //一般句话,搞定支持元数据 功能       
    });
}

几行的变化完成了以下几件事:
1、检测元数据是否已经配置
2、如果已配置,将配置属性与额外的元数据进行扩展
<!--  markup  -->
<div class="hilight { background: 'red', foreground: 'white' }">
  Have a nice day!这是元数据
</div>
<div class="hilight { foreground: 'orange' }">
  Have a nice day!在标签中配置
</div>
<div class="hilight { background: 'green' }">
  Have a nice day!
</div>
然后我们通过一句脚本就可以根据元数据配置分开地高亮显示这些div标签:
$('.hilight').hilight();
最后,将全部代码放在一起:
//
//create closure
//
(function($){
    //
    // plugin definition
    //
    $.fn.hilight = function(options){
        debug(this);
        //build main options before element iteration
        var opts = $.extend({}, $.fn.hilight.defaults, options);
        //iterate and reformat each matched element
        return this.each(function(){
            $this = $(this);
            //build element specific options
            var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
            //update element styles
            $this.css({
                backgroundColor: o.background,
                color: o.foreground
            });
            var markup = $this.html();
        //call our format function
        
        });
    }
    
    //
    // private function for debugging
    //
    function debug($obj){
        if(window.console && window.console.log){
            window.console.log('hilight selection count: '   $obj.size());
        }
    };
    //
    // define and expose our format function
    //
    $.fn.hilight.format = function(txt){
        return '<strong>'   txt   '</strong>';
    };
    
    //
    // plugin defaults
    //
    $.fn.hilight.defaults = {
        foreground    :    'red',
        background    :    'yellow'
    };
    
    //
    // end of clousure
    //
})(jQuery);
分享到:
评论

相关推荐

    如何编写jquery插件

    本文将详细介绍如何编写jQuery插件 类型 jQuery的插件主要分为3种类型 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进行操作,是最常见的一种插件。此类插件可以发挥出jQuery...

    jQuery插件开发学习

    这篇“jQuery插件开发学习”的主题旨在帮助开发者深入理解如何利用jQuery来开发自定义插件,提高代码复用性和项目效率。下面我们将详细探讨jQuery插件开发的相关知识点。 首先,了解jQuery的核心概念是至关重要的。...

    jquery插件编写指南

    ### jQuery 插件编写指南详解 #### 一、引言 在前端开发中,jQuery 是一个非常流行的 JavaScript 库,它极大地简化了 HTML 文档遍历、事件处理、动画等操作,同时也支持丰富的插件机制。本文将详细介绍如何编写 ...

    用JS编写JQuery插件版的动画播放器

    我们将深入理解jQuery插件的构造,动画原理,并通过分析`player.js`文件中的代码来学习如何创建和控制动画。 首先,jQuery插件的基本结构通常包含两个部分:封装和扩展。封装是为了保持原有jQuery对象的干净,而...

    jQuery插件编写步骤详解

    编写jQuery插件不仅能够提高代码的可复用性,还能提升开发效率。理解并掌握这些步骤和技巧,对于深入学习jQuery和Web开发是非常有帮助的。通过不断实践和优化,开发者可以创造出功能强大、易于使用的jQuery插件,为...

    jquery插件开发文档

    在编写jQuery插件时,首先要了解其基本结构。开发者通常往`jquery.fn`对象中添加一个特定的函数对象,从而创建一个新的插件。例如,创建一个名为`myPlugin`的插件,可以这样定义: ```javascript jQuery.fn....

    jQuery插件开发全解析

    这种方式的好处在于可以在编写jQuery插件时使用 `$` 这个别名,而不会与其他库(如Prototype)的全局变量冲突。 #### 四、小结 通过学习以上两种类型的jQuery插件开发,开发者不仅能够更好地理解和利用jQuery的...

    Jquery快速学(五,常用的插件应用与编写)

    2. **插件编写技巧**:编写jQuery插件时,需要注意几个核心元素,如设置默认选项、接收参数、处理DOM元素、封装代码等。通常,插件会接受用户自定义的配置项,并在内部进行处理。此外,良好的插件设计应考虑到代码的...

    关于JQUERY插件的编写帮助

    当你需要扩展jQuery的功能时,编写jQuery插件是理想的选择。本篇将详细介绍如何编写jQuery插件,帮助你在JavaScript编程中更加得心应手。 一、jQuery插件基础 1. 插件创建结构: 一个基本的jQuery插件定义通常包括...

    Jquery插件-弹窗

    - 编写jQuery插件:在jQuery插件中,你可以定义一个方法,如`.popup()`,在调用这个方法时,显示弹窗;提供关闭方法,如`.closePopup()`,用于关闭弹窗。还可以添加动画效果,如淡入淡出,滑动等。 4. 插件的调用...

    利用jQuery插件构建无限级分类Tree

    在编写jQuery插件时,我们需要考虑以下几个关键点: 1. **数据处理**:接收并解析JSON数据,构建树结构。 2. **HTML结构**:生成具有正确父子关系的HTML元素。 3. **事件绑定**:为展开/折叠按钮绑定事件监听器,...

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

    最后,编写jQuery插件时,重要的是遵循良好的编码实践。确保插件的代码清晰、结构化,并且提供必要的文档说明和示例。良好的插件不仅方便其他开发者使用,同时也能为自己或社区贡献价值,这也是在软件开发领域中常...

    jQuery插件

    学习如何编写jQuery插件,不仅能够提升个人技能,还能在实际工作中提升开发效率。 在实际应用中,jQuery插件通常遵循以下步骤: 1. 定义插件函数,并将其绑定到jQuery.fn对象上。 2. 在插件内部,使用`this`关键字...

    jquery 插件开发

    jQuery库因其简洁的API和丰富的功能而广受欢迎,而编写jQuery插件则是利用其强大能力的一种方式。 首先,要理解jQuery插件的基本结构。一个简单的jQuery插件通常包含以下部分: 1. **封装器函数**:这是jQuery插件...

    jQuery第5天知识点:隐式迭代、链式编程、jQuery插件.7z

    编写jQuery插件通常涉及以下步骤: - 创建一个函数,接收jQuery对象作为参数。 - 在函数内部,使用`$.fn.extend`将新方法添加到jQuery的原型上,使该方法能作用于jQuery对象。 - 在插件方法中,处理DOM操作、数据...

    jquery插件

    总结来说,学习和编写jQuery插件对于提升JavaScript和前端开发能力大有裨益。通过实践和理解"jQueryPlugin"中的代码,你可以更好地掌握jQuery插件的原理和技巧,进一步提升你的Web开发技能。记得深入研究代码,尝试...

    jQuery插件,jQuery插件

    通过编写或使用jQuery插件,开发者可以轻松地实现特定功能,而无需从零开始编写大量的JavaScript代码。 创建一个jQuery插件通常涉及到以下几个步骤: 1. **封装函数**:首先,你需要将你的功能封装成一个函数,这...

    eclipse上支持jquery插件

    标题“eclipse上支持jquery插件”所指的就是这种能够为Eclipse添加jQuery智能提示和代码辅助功能的扩展。这样的插件使得开发者在编写jQuery代码时,可以享受到如同使用Java或其他语言一样的代码补全、错误检查和调试...

    sublime2 jquery插件

    在编写jQuery代码时,只需按下`Ctrl + Shift + P`,输入`jQuery`,编辑器会自动识别并应用相应的高亮样式,使得代码中的jQuery函数、选择器等元素一目了然。 此外,jQuery插件可能还会提供其他辅助功能,例如代码...

Global site tag (gtag.js) - Google Analytics