JavaScript(jquery) - 点击事件中的范围问题

时间:2013-03-21 15:35:55

标签: javascript jquery class scope

我知道这个主题已经在类似主题中讨论过,但我找不到的解决方案都无法帮助我理解我的问题。

这是我的简化课程,通常是我定义它们。

BottomNav = function() {
  this.init();
}

$.extend(BottomNav.prototype, {
  init: function(){

      this.insue = false;

     $(".up").click($.proxy(function () {
            var thisinuse = this.inuse;
            if(this.inuse===false) {
              this.inuse = true;
              this.moveSlider('up');
        }
     },this));
  },
  moveSlider: function(d){
    //some instructions
        alert('move slider');
  } 
 });


$(document).ready(function() {
    new BottomNav();
});

在单击事件内的断点处的FireBug中,this.inuse未定义! (这是我的问题),我的范围看起来很好看(萤火虫的右侧面板),this.insue是假的,因为它应该 - 抱歉我还不能发布图像!

我很感激有人可能会帮助识别这种非常奇怪的行为。

我尝试了一些工作人员,比如将click事件定义放在另一个函数中,但它也不起作用。我尝试了不同的绑定方式,它也不起作用。

但是下面的例子正在处理我制作的其他一些类。我可以从事件,效果中访问类范围。

2 个答案:

答案 0 :(得分:2)

这只是一个错字:

  this.insue = false;

insue更改为inuse,该属性将在那里: - )

除此之外,变量thisinuse在这里是多余的。并将条件更改为if(! this.inuse),而不是与布尔值进行比较......

答案 1 :(得分:0)

可以将

this.inuse分配给click事件处理程序的变量,并使用处理程序中的变量。