
看到下面的代码后,一下子懵逼了。这个this指向哪儿去了。
jQuery.fn.extend({ check: function() { return this.each(function() { this.checked = true; }); }, uncheck: function() { return this.each(function() { this.checked = false; }); } });
自身的对象是个匿名的。后来看了http://www.365mini.com/page/jquery_fn_extend.htm 《 jQuery.fn.extend() 函数详解》才反应过来。
var obj = { site: "CodePlayer", check: function(){ // 扩展到jQuery原型上后,这里的this表示当前jQuery对象 this.prop("checked", true); return this; }, isEmpty: function(){ return !$.trim( this.val() ); } }; // 将对象obj的属性和方法扩展到jQuery的原型对象上,以便于jQuery实例对象调用。 $.fn.extend( obj ); $("#btn").click(function(){ if( $("#name").isEmpty() ){ alert("姓名不能为空!"); return false; } $("[name=opt]").check( ); // 全选复选框 alert( $("body").site ); // CodePlayer });
this本来就是指向参数中的这个对象的。