是否可以在课堂上进行此操作?
$("#" + field).click(this.validate);
所以基本上我想传递一个对象的功能,只要点击某个东西就应该执行该功能。此外,如果此对象有多个实例,则应执行正确的实例(即为给定字段运行此代码的实例)。
答案 0 :(得分:3)
我不确定一个简单的方法,但你总能走封闭路线:
var that = this;
$("#" + field).click(function() {
that.validate();
});
答案 1 :(得分:1)
是否可以在课堂上进行此操作?
$(“#”+ field).click(this.validate);
“this.validate”存在问题。 JavaScript没有绑定方法,因此当您传递该引用时,它只指向普通函数。调用时,“this”将无法正确设置。有关绑定损失问题的详尽讨论,请参阅ALA。
一些框架提供内置的方法绑定功能; jQuery没有,因为它倾向于更多地关注闭包而不是JavaScript对象。无论如何,使用闭包创建绑定包装非常简单; Andrey的答案是jQuery用户常用的方法。
使用事件处理程序的闭包(无论是否使用jQuery)要注意的一件事是,它往往会导致IE中的内存泄漏。对于简单,短命的网页,您可能不在乎。
答案 2 :(得分:0)
是的,这是可能的。
10分钟之前正在编写一个片段,因为我遇到了这个问题
$("div.myalarms_delete").click(function(){
var mid = this.id;
$("li#"+mid).fadeOut("fast");
});
div.alarms也删除了我需要的ID
答案 3 :(得分:0)
从课堂内部开始,你通常最好使用.find功能。
var child = this.find('.someChildClass');
var child2 = this.find('#someChildId');