使用jquery时,函数中的this指向分为jquery对象和原生html对象。

所谓jquery对象就是继承自jquery.fn的对象。

比如$("div")得到一个jquery对象,这个jquery对象封装了页面中所有的div元素,

通过$("div").length可以得到元素的个数;

通过$("div").bind(event, function(e){});可以给页面中的元素注册事件,

关键在于,它是通过给$("div")这个jquery对象封装的每个div元素注册事件来达到目的的,在这里function(e){}中的this指向原生div元素的js对象;

对于jquery.fn.extend({fun1:function{}, fun2:function{}})方法;

它是通过给所有jquery对象隐式链接的对象,即原型对象jquery.fn增加属性来达到目的的,所以所有jquery对象都会继承这里的属性方法;

这样以来fun1和fun2中的this指向变为了jquery对象了,而不是html对象,所以在fun1中可以直接写this.each(function(){})....而不是通过$(this).each(function(){}),尽管后者也是可行

jQuery.fn.extend({

   myMethod: function(){

   $($($(this))).each(function(i){ $(this).click(function() 

       {alert($(this).html().trim() + i)})});

   } }

 

$(" div  p ").myMethod();