在使用类时,在jquery click事件中调用函数

时间:2009-08-05 20:10:04

标签: jquery class

假设我有这个:

test = function() {

 this.init = function() {
  $("#someElement").html("Hey!").mousedown(function() {
   $(this).html("Clicked");

   /* 
    Now, if I wanted it to call function "dosomething" defined in the class, how would I do that? this.dosomething() obviously doesn't work.
   */

  });
 }

 this.dosomething = function() {
  alert("Did it!");
 }

}

var _go = new test();
_go.init();

3 个答案:

答案 0 :(得分:2)

将“dosomething”调用封装到外部函数中的javascript变量中,并在内部函数中引用它。

this.init = function() {
var doSomething = this.doSomething;  
$("#someElement").html("Hey!").mousedown(function() {
   $(this).html("Clicked");

      doSomething();   

  });
 }

这会创建一个闭包,其中内部函数仍然引用外部函数中的变量。

答案 1 :(得分:1)

您可以在丢失对班级的引用之前设置上下文:

test = function() {

  var context = this;

  init = function() {
    $("#someElement").html("Hey!").mousedown(function() {
      $(this).html("Clicked");
      context.dosomething();

    });
  }

  dosomething = function() {
    alert("Did it!");
  }

}

答案 2 :(得分:0)

事先将测试声明为新函数()。

test = new function() {};

test.init = function() {
    test.foo();
};

我确信还有其他/更好的方法可以做到这一点,但我知道这很有效。