Вызов функции в событии jquery click при использовании классов - PullRequest
1 голос
/ 06 августа 2009

Допустим, у меня есть это:

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 ]

2 голосов
/ 06 августа 2009

Инкапсулируйте вызов "dosomething" в переменную javascript в вашей внешней функции и ссылайтесь на нее во внутренней функции.

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

      doSomething();   

  });
 }

Это создает замыкание, в котором внутренняя функция все еще имеет ссылку на переменные во внешней функции.

1 голос
/ 06 августа 2009

Вы можете установить контекст до потери ссылки на ваш класс:

test = function() {

  var context = this;

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

    });
  }

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

}
0 голосов
/ 06 августа 2009

Объявите тест как новую функцию () заранее.

test = new function() {};

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

Я уверен, что есть другие / лучшие способы сделать это, но я знаю, что это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...