Доступ к внешним объектам из функций jQuery CallBack - PullRequest
1 голос
/ 27 ноября 2009

Сценарий:

My_Object = {

  my_div: "#mydiv",

  my_method: function()
  {
    $(this.my_div).fadeOut("slow", function() { $(this.my_div).fadeIn("slow"); });
  }

}

this.my_div не распознается в вызове fadeIn, так как this больше не указывает на исходный объект. Как передать исходный объект в функцию обратного вызова?

Ответы [ 2 ]

2 голосов
/ 27 ноября 2009

Сохраните "this" во временной переменной:

My_Object = {

  my_div: "#mydiv",

  my_method: function()
  {
    var tmp = this;
    $(this.my_div).fadeOut("slow", function() { $(tmp.my_div).fadeIn("slow"); });
  }

}
1 голос
/ 27 ноября 2009

Это потому, что внутри обратного вызова fadeOut (), this теперь является исчезающим элементом. Я предполагаю, что вы хотите вернуть его обратно, просто сделайте это:

My_Object = {
  my_div: "#mydiv",
  my_method: function() {
    $(this.my_div).fadeOut("slow", function() {
      $(this).fadeIn("slow"); // refers to the same object being faded out
    });
  }
}

Концепция Javascript this немного сбивает с толку.

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