你能用jquery做到这一点吗?

时间:2009-03-02 14:48:15

标签: javascript jquery events

是否可以在课堂上进行此操作?

   $("#" + field).click(this.validate);

所以基本上我想传递一个对象的功能,只要点击某个东西就应该执行该功能。此外,如果此对象有多个实例,则应执行正确的实例(即为给定字段运行此代码的实例)。

4 个答案:

答案 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');