从jQuery CallBack函数访问外部对象

时间:2009-11-27 15:11:03

标签: javascript jquery

情景:

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 个答案:

答案 0 :(得分:2)

将“this”存储在临时变量中:

My_Object = {

  my_div: "#mydiv",

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

}

答案 1 :(得分:1)

那是因为在fa​​deOut()回调中,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概念有点令人困惑。