最近用闭包写了一个日历的jQuery插件,在绑定方法的时候发现直接使用$.click方法无法将闭包里的函数最总绑定到按钮上,查了一些资料发现了一些好玩的东西,逐记之.
1) http://lib.sinaapp.com 是新浪SAE提供的一个js和css的CDN静态资源库
2) 把这个日历插件上传到了 googlecode 需要的同学可以使用 http://code.google.com/p/jqcalendar/
3) $.proxy是1.4才增加的一个函数可以让一个函数始终支持一个特定的作用域,可以解决这个问题.
示例
描述:
强制设置函数的作用域,让this指向obj而不是#test对象。
HTML 代码:
<div id="test">Click Here!</div>
jQuery 代码:
var obj = {
name: "John",
test: function() {
alert( this.name );
$("#test").unbind("click", obj.test);
}
};
$("#test").click( jQuery.proxy( obj, "test" ) );
// 以下代码跟上面那句是等价的:
// $("#test").click( jQuery.proxy( obj.test, obj ) );
// 可以与单独执行下面这句做个比较。
// $("#test").click( obj.test );