我已经使用jQuery创建了一个“控件”,并使用jQuery.extend来帮助它尽可能地成为面向对象的。
在我的控件初始化期间,我连接了各种单击事件,如下所示
jQuery('#available input',
this.controlDiv).bind('click', this, this.availableCategoryClick);
请注意,我将'this‘作为绑定方法中的数据参数进行传递。我这样做是为了获得附加到控件实例的数据,而不是从激发单击事件的元素中获取数据。
这很好用,但我怀疑还有更好的方法
我以前使用过Prototype,我记得有一个绑定语法,它允许你控制'this‘在事件中的值是什么。
什么是jQuery方式?
发布于 2011-04-20 15:53:55
你可以将上下文与匿名函数一起使用,只是有一点尴尬,因为‘jQuery.proxy()
’是第二个参数。
$("#button").click($.proxy(function () {
//use original 'this'
},this));
发布于 2009-12-31 06:50:24
我喜欢你的方式,实际上使用了类似的结构:
$('#available_input').bind('click', {self:this}, this.onClick);
This.onClick的第一行:
var self = event.data.self;
我喜欢这种方式,因为这样就可以在不使用闭包的情况下将元素和" this“对象都作为self进行单击(如下所示)。
发布于 2011-02-14 19:32:46
jQuery具有jQuery.proxy
方法(从1.4开始可用)。
示例:
var Foo = {
name: "foo",
test: function() {
alert(this.name)
}
}
$("#test").click($.proxy(Foo.test, Foo))
// "foo" alerted
https://stackoverflow.com/questions/520019
复制相似问题