`
itxdl
  • 浏览: 26926 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

jQuery插件开发模式

阅读更多
jQuery插件开发模式
软件开发过程中是需要一定的设计模式来指导开发的,有了模式,我们就能更好地组织我们的代码,并且从这些前人总结出来的模式中学到很多好的实践。

根据兄弟连教育(www.lampbrother.net)jQuery高级编程的描述,jQuery插件开发方式主要有三种:

通过$.extend()来扩展jQuery
通过$.fn 向jQuery添加新的方法
通过$.widget()应用jQuery UI的部件工厂方式创建
通常我们使用第二种方法来进行简单插件开发,说简单是相对于第三种方式。第三种方式是用来开发更高级jQuery部件的,该模式开发出来的部件带有很多jQuery内建的特性,比如插件的状态信息自动保存,各种关于插件的常用方法等,非常贴心,这里不细说。

而第一种方式又太简单,仅仅是在jQuery命名空间或者理解成jQuery身上添加了一个静态方法而以。所以我们调用通过$.extend()添加的函数时直接通过$符号调用($.myfunction())而不需要选中DOM元素($('#example').myfunction())。请看下面的例子。

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

上面代码中,通过$.extend()向jQuery添加了一个sayHello函数,然后通过$直接调用。到此你可以认为我们已经完成了一个简单的jQuery插件了。

但如你所见,这种方式用来定义一些辅助方法是比较方便的。比如一个自定义的console,输出特定格式的信息,定义一次后可以通过jQuery在程序中任何需要的地方调用它。

$.extend({    log: function(message) {        var now = new Date(),            y = now.getFullYear(),            m = now.getMonth() + 1, //!JavaScript中月分是从0开始的            d = now.getDate(),            h = now.getHours(),            min = now.getMinutes(),            s = now.getSeconds(),            time = y + '/' + m + '/' + d + ' ' + h + ':' + min + ':' + s;        console.log(time + ' My App: ' + message);    }})$.log('initializing...'); //调用

但这种方式无法利用jQuery强大的选择器带来的便利,要处理DOM元素以及将插件更好地运用于所选择的元素身上,还是需要使用第二种开发方式。你所见到或使用的插件也大多是通过此种方式开发。

插件开发

下面我们就来看第二种方式的jQuery插件开发。

基本方法

先看一下它的基本格式:
$.fn.pluginName = function() {    //your code goes here}
基本上就是往$.fn上面添加一个方法,名字是我们的插件名称。然后我们的插件代码在这个方法里面展开。

比如我们将页面上所有链接颜色转成红色,则可以这样写这个插件:
$.fn.myPlugin = function() {    //在这里面,this指的是用jQuery选中的元素    //example :$('a'),则this=$('a')    this.css('color', 'red');}
在插件名字定义的这个函数内部,this指代的是我们在调用该插件时,用jQuery选择器选中的元素,一般是一个jQuery类型的集合。比如$('a')返回的是页面上所有a标签的集合,且这个集合已经是jQuery包装类型了,也就是说,在对其进行操作的时候可以直接调用jQuery的其他方法而不需要再用美元符号来包装一下。

所以在上面插件代码中,我们在this身上调用jQuery的css()方法,也就相当于在调用 $('a').css()。

理解this在这个地方的含义很重要。这样你才知道为什么可以直接商用jQuery方法同时在其他地方this指代不同时我们又需要用jQuery重新包装才能调用,下面会讲到。初学容易被this的值整晕,但理解了就不难。

现在就可以去页面试试我们的代码了,在页面上放几个链接,调用插件后链接字体变成红色。

<ul> <li> <a href="http://www.webo.com/liuwayong">我的微博</a> </li> <li> <a href="http://http://www.cnblogs.com/Wayou/">我的博客</a> </li> <li> <a href="http://wayouliu.duapp.com/">我的小站</a> </li></ul><p>这是p标签不是a标签,我不会受影响</p><script src="jquery-1.11.0.min.js"></script><script src="jquery.myplugin.js"></script><script type="text/javascript"> $(function(){ $('a').myPlugin(); })</script>

下面进一步,在插件代码里处理每个具体的元素,而不是对一个集合进行处理,这样我们就可以针对每个元素进行相应操作。

我们已经知道this指代jQuery选择器返回的集合,那么通过调用jQuery的.each()方法就可以处理合集中的每个元素了,但此刻要注意的是,在each方法内部,this指带的是普通的DOM元素了,如果需要调用jQuery的方法那就需要用$来重新包装一下。

比如现在我们要在每个链接显示链接的真实地址,首先通过each遍历所有a标签,然后获取href属性的值再加到链接文本后面。

更改后我们的插件代码为:

$.fn.myPlugin = function() {    //在这里面,this指的是用jQuery选中的元素    this.css('color', 'red');    this.each(function() {        //对每个元素进行操作        $(this).append(' ' + $(this).attr('href'));    }))}
调用代码还是一样的,我们通过选中页面所有的a标签来调用这个插件

到此,你已经可以编写功能简单的jQuery插件了。是不是也没那么难。
分享到:
评论

相关推荐

    jquery插件开发模式实例详解

    本文实例讲述了jquery插件开发模式。分享给大家供大家参考,具体如下: jquery插件一般有三种开发方式: 通过$.extend()来扩展jQuery 通过$.fn 向jQuery添加新的方法 通过$.widget()应用jQuery UI的部件工厂方式...

    老司机带你解读jQuery插件开发流程

    ### jQuery插件开发模式 jQuery插件开发主要有三种模式,分别是通过`$.extend()`扩展jQuery,通过`$.fn`向jQuery添加新方法,以及使用`$.widget()`方法结合jQuery UI创建。通常情况下,开发者更常使用的是通过`$.fn...

    jquery 插件开发 pdf

    jQuery插件开发是扩展这个库功能的一种常见方式,使得开发者能够根据项目需求创建自定义功能。以下是对jQuery插件开发的详细讲解: 1. **插件基础** - jQuery插件通常是通过扩展jQuery对象的原型链来实现的,这...

    jQuery插件开发详解

    《jQuery插件开发详解》 ...总之,jQuery插件开发是一个结合了JavaScript基础、jQuery库特性和设计模式的综合实践过程。通过理解并掌握这些知识,开发者能够更高效地构建功能丰富的交互式网页应用。

    JQuery插件开发 + 插件

    这篇博文“JQuery插件开发 + 插件”可能涉及到如何创建自定义的jQuery插件以及如何利用这些插件来增强网页功能。下面我们将深入探讨jQuery插件开发的相关知识点。 一、jQuery插件基础 1. 插件定义:jQuery插件是...

    jQuery插件开发教程

    ### jQuery插件开发详解 #### 类级别的插件开发 类级别的插件开发,是指在jQuery的全局作用域中增加新的函数或属性,这种方式相当于给jQuery类本身添加了静态方法。这种开发模式允许开发者向jQuery的核心功能集合...

    Jquery插件开发

    ### Jquery插件开发全解析 #### 一、类级别的插件开发 在Jquery插件开发中,类级别的插件开发是指向Jquery添加新的全局函数,这实质上是给Jquery类本身添加方法。这类插件开发的直接目标是在Jquery的命名空间中...

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

    学习jQuery插件开发对于任何希望提升自身前端开发能力的开发者而言,是一项非常重要的技能。 在插件开发中,首先需要了解的是插件开发的基本模式。根据《jQuery高级编程》所述,jQuery插件开发主要有以下几种方式:...

    总结jQuery插件开发中的一些要点

    总结而言,jQuery插件开发中需要关注插件的设计模式、命名规范、上下文维护、事件处理等方面,遵循最佳实践以确保插件的质量和效率。同时,良好设计的文档和兼容性测试也是不可或缺的部分。掌握这些要点,能有助于...

    jquery插件库-jquery仿京东商品详情页图片放大效果.zip

    开发一个jQuery插件通常包括定义一个新的函数,该函数接受参数并利用jQuery对象进行操作。这种设计模式使得开发者能够轻松地将插件整合到自己的项目中。 京东商品详情页的图片放大效果,通常涉及到图片预览、缩放和...

    Jquery 插件开发

    总结,jQuery插件开发提供了强大的工具来扩展其核心功能,无论是创建静态辅助函数还是处理DOM元素的复杂操作。通过熟练掌握类级别和对象级别的插件开发,开发者可以构建出更丰富、更个性化的网页应用。无论是初学者...

    解读jQuery插件开发流程_.docx

    ### 解读jQuery插件开发流程 #### 插件开发背景与意义 随着Web技术的发展,JavaScript作为前端开发的重要工具之一,其重要性不言而喻。jQuery作为一个流行的JavaScript库,因其简便性和强大的功能深受开发者喜爱。...

    实现滚屏操作的jquery 插件

    针对滚屏操作,jQuery 提供了一些内置的方法,如 `animate()` 和 `scrollTop()`,但为了实现更复杂和定制化的滚屏功能,开发者通常会利用 jQuery 插件。本篇文章将详细介绍一个名为 "fullpage" 的 jQuery 插件,该...

    jquery-patterns, 用于启动插件开发的各种jQuery插件模式.zip

    jquery-patterns, 用于启动插件开发的各种jQuery插件模式 插件插件插件模式 因此,你已经尝试了模板,或者编写了一些你自己的插件。 他们工作的程度和可以读性,但是你对学习的感兴趣,如果有更好的方式可以以结构。...

    jquery ui messager 消息框

    8. **插件架构**:jQuery UI Messager遵循jQuery插件开发模式,通过链式调用来初始化和配置插件,提供了一种模块化和可复用的代码结构。 9. **API和方法**:插件通常会提供一组API接口和方法,例如`$.messager.show...

    jquery插件集合,采用mvc模式开发了很多插件

    本资源包“jquery插件集合”正是基于jQuery,采用MVC(Model-View-Controller)模式开发的一系列实用插件,旨在提升前端用户体验和开发效率。 首先,让我们关注其中的一个关键组件——“多图上传”插件。在网页中...

    jQuery图片展示插件Revealing.zip

    8. **插件化开发**:Revealing遵循jQuery插件开发模式,通常包括一个自执行匿名函数,封装代码并提供公共接口供用户调用。这使得插件易于集成和扩展。 通过以上知识点的整合,jQuery图片展示插件Revealing实现了从...

    十套常用的精美jquery插件

    在网页开发中,jQuery插件是一种扩展了jQuery库功能的JavaScript代码,使得开发者可以更轻松地实现复杂的功能,如动画效果、交互控件等。本资源包含十套常用的精美jQuery插件,涵盖了多个实用场景,下面将逐一介绍。...

Global site tag (gtag.js) - Google Analytics