События Jquery не работают с объектами? - PullRequest
0 голосов
/ 24 июня 2011

Я пытаюсь сделать это:

var foo = new Foo();
foo.setEvents( foo );

Код foo:

function Foo()
{
   this.id = getId(); //this works successfully, each instance of foo gets
                          //assigned a new auto incrementing id e.g 1, 2, 3, etc

   this.setEvents = function( that ) 
   {
      $("#myButton").click( that.bar );
   }

   this.bar = function()
   {
      alert(this.id);
   }
}

Всякий раз, когда я запускаю этот код и нажимаю на мою кнопку, я получаю предупреждение «undefined»

Как я могу сохранить состояние объекта, метод которого я хочу запустить при запуске события?

Ответы [ 2 ]

1 голос
/ 24 июня 2011

Когда вызывается эта функция, this указывает на собственный элемент DOM, который обработал событие.

Вам нужна ссылка на сам объект, который может быть разрешен в области действия этой функции.

Обычный способ сделать это с var that = this.

jsFiddle .

1 голос
/ 24 июня 2011

это относится к чему-то другому в области jQuerys ...

function Foo()
{
   obj=this;
   this.id = 1; //this works successfully, each instance of foo gets
                          //assigned a new auto incrementing id e.g 1, 2, 3, etc

   this.setEvents = function( that ) 
   {
      $("#myButton").click( that.bar );
   }

   this.bar = function()
   {
      console.log(obj)
   }
}
var foo = new Foo();
foo.setEvents( foo );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...