如何在scroll事件中访问对象范围?

时间:2014-08-29 16:59:16

标签: javascript jquery events

我有一个函数foo,在window.scroll上调用。我想访问foo中的对象变量,例如我想从父对象中打印hello的值。

jsfiddle link

 var Object = {
 hello: "hello",

  foo: function(e){
      alert(this.hello); //Prints undefined! I want to get this.hello
  },

  scrollListener: function(){
    var _this = this;
    $(window).scroll(_this.foo);
  },
};

2 个答案:

答案 0 :(得分:2)

我认为在匿名函数中包装_this.foo可以解决问题。

在window.scroll中使用此功能

$(window).scroll(function(){
      _this.foo();
});

DEMO

答案 1 :(得分:0)

有2个解决方案

1)使用$.proxy来做这个伎俩。

$(window).scroll( $.proxy(_this.foo,this) );

DEMO

2)返回foo函数,然后调用它。

foo: function(context) {
    var that = context;
    return function(e){ alert(that.hello); }
},

scrollListener: function(){
   var _this = this;
   $(window).scroll(_this.foo(_this));
},

DEMO