当前位置:   article > 正文

jQuery插件的几种写法大总结

.$.extend()相对困难,一般很少能够独立开发复杂插件,仅仅是在jquery命名空间或者

摘要: 插件编写的目的是给已经有的一系列方法或函数做一个封装,以便在其他地方重复使用,方便后期维护

插件编写的目的是给已经有的一系列方法或函数做一个封装,以便在其他地方重复使用,方便后期维护

jQuery插件开发方式

通过$.extend()来扩展jQuery

通过$.fn 向jQuery添加新的方法

通过$.widget()应用jQuery UI的部件工厂方式创建

三种jQuery插件开发方式说明

$.extend()相对简单,一般很少能够独立开发复杂插件,仅仅是在jQuery命名空间或者理解成jQuery身上添加了一个静态方法而以

我们调用通过$.extend()添加的函数时直接通过$符号调用($.myfunction()),而不需要选中DOM元素($('#example').myfunction())

$.widget()是一种高级的开发模式,该模式开发出来的部件带有很多jQuery内建的特性,比如插件的状态信息自动保存,各种关于插件的常用方法等

$.fn则是一般插件开发用到的方式,可以利用jQuery强大的选择器带来的便利,以及将插件更好地运用于所选择的元素身上,使用的插件也大多是通过此种方式开发

$.extend()扩展jQuery的实例

  1. $.extend({
  2. sayHello: function(name) {
  3. console.log('Hello,' + (name ? name : 'aaa') + '!');
  4. }
  5. })
  6. $.sayHello(); //Hello,aaa
  7. $.sayHello('bbb'); //Hello,bbb

说明:上面代码中,通过$.extend()向jQuery添加了一个sayHello函数,然后通过$直接调用

$.fn方式插件开发

定义

  1. $.fn.pluginName = function() {
  2. //your code here
  3. }

定义说明

基本上就是往$.fn上面添加一个方法,名字是我们的插件名称。然后我们的插件代码在这个方法里面展开

简单实例

将页面上所有链接颜色转成红色,则可以这样写这个插件

  1. $.fn.myPlugin = function() {
  2. //在这里面,this指的是用jQuery选中的元素 example :$('a'),则this=$('a')
  3. this.css('color', 'red');
  4. }

实例说明

1、在插件名字定义的这个函数内部,this指代的是我们在调用该插件时,用jQuery选择器选中的元素,一般是一个jQuery类型的集合。在插件名字定义的这个函数内部,this指代的是我们在调用该插件时,用jQuery选择器选中的元素,一般是一个jQuery类型的集合

2、如果通过调用jQuery的.each()方法处理集合中的每个元素时要注意的是,在each方法内部,this指带的是普通的DOM元素了,如果需要调用jQuery的方法那就需要用$来重新包装一下

  1. $.fn.myPlugin = function() {
  2. this.css('color', 'red'); //在这里面,this指的是用jQuery选中的元素
  3. this.each(function() {
  4. $(this).append(' ' + $(this).attr('href')); //对每个元素进行操作
  5. }))
  6. }

实例插件的使用

  1. <ul>
  2. <li> <a href="#">aaa</a> </li>
  3. <li> <a href="#">bbb</a> </li>
  4. <li> <a href="#">ccc</a> </li>
  5. </ul>
  6. <p>这是p标签不是a标签,我不会受影响</p>
  7. <script type="text/javascript">
  8. $(function(){
  9. $('a').myPlugin();
  10. })
  11. </script>

让插件支持链式调用

jQuery一个时常优雅的特性是支持链式调用,选择好DOM元素后可以不断地调用其他方法。要让插件不打破这种链式调用,只需return一下即可

  1. $.fn.myPlugin = function() {
  2. this.css('color', 'red'); //在这里面,this指的是用jQuery选中的元素
  3. return this.each(function() {
  4. $(this).append(' ' + $(this).attr('href')); //对每个元素进行操作
  5. }))
  6. }

让插件接收参数

1、一个强劲的插件是可以让使用者随意定制的,这要求我们提供在编写插件时就要考虑得全面些,尽量提供合适的参数

2、比如现在我们不想让链接只变成红色,我们让插件的使用者自己定义显示什么颜色,要做到这一点很方便,只需要使用者在调用的时候传入一个参数即可。同时我们在插件的代码里面接收

3、为了灵活,使用者可以不传递参数,插件里面会给出参数的默认值

4、在处理插件参数的接收上,通常使用jQuery的extend方法,当给extend方法传递一个以上的参数时,它会将所有参数对象合并到第一个里。同时,如果对象中有同名属性时,合并的时候后面的会覆盖前面的。

5、可以在插件里定义一个保存插件参数默认值的对象,同时将接收来的参数对象合并到默认对象上,最后就实现了用户指定了值的参数使用指定的值,未指定的参数使用插件默认值

6、保护好默认参数:做法是将一个新的空对象做为$.extend的第一个参数,defaults和用户传递的参数对象紧随其后,这样做的好处是所有值被合并到这个空对象上,保护了插件里面的默认值

转载于:https://my.oschina.net/u/3472227/blog/968263

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/227875
推荐阅读
相关标签
  

闽ICP备14008679号