理解jQuery.extend和jQuery.fn.extent的区别

看完jQuery中文手册和jQuery官方网站后,我觉得里面的jQuery.extend和jQuery.fn.extend的区别有点难,从Google中找了一些资料,加上自己的理解,做以下心得笔记:

jQuery.extend
对jQuery对象的扩展,可以理解为静态方法,是全局的,不需要实例jQuery就可以使用。

JAVASCRIPT:
  1. <!--
  2.         jQuery.extend({
  3.             add: function(a, b) {
  4.                 return a + b;
  5.             }
  6.         });
  7.  
  8.         alert($.add(3, 4)); //7
  9.     //-->

jQuery.fn.extend
对jQuery元素的扩展,只能用在jQuery元素上,可以理解为普通方法。定义插件时需要返回this,以支持jQuery的链式操作。

JAVASCRIPT:
  1. <!--
  2.         jQuery.fn.extend({
  3.             red: function() {
  4.                 return $(this).css('color', '#ff0000');
  5.             }
  6.         });
  7.  
  8.         $('#test').red();
  9.     //-->

jQuery用对象方法做事件绑定

jQuery的事件绑定遇到OOP时,就有不太好用,如果你想绑定一个对象的方法到一个事件上,遇到最大的问题就是:jQuery对象自己封装了bind,传递参数时,this被用来指向了触发事件的元素,这就导致了在方法中使用this指向对象本身都会出现“未定义”的错误。下面对jQuery做了扩展,添加了hitch函数,用来传递this对象,如果第三个参数未提供,hitch和bind函数是一样的。如果需要获取到事件触发的元素,就使用原生的e.target。 详情 »