2016-12-18 217 views
0

我想在调整窗口大小时调整div的大小。用下面的代码我得到“this.fullScreen不是一个函数”如果我删除窗口调整大小它工作正常,但显然不会调整窗口大小。我在想这个错误的方式吗?当调整大小时,jquery窗口调整大小错误

var PE = {}; 

PE.functions = { 
    fullScreen: function fullScreen() { 
    var fullScreen = $('.full-screen'), 
     navbarHeight = $('.navbar').height(), 
     windowHeight = $(window).height(), 
     windowWidth = $(window).width(); 

    fullScreen.css({ 
     width: windowWidth, 
     height: windowHeight - navbarHeight 
    }); 
    }, 

    fullScreenResize: function screenResize() { 
    $(window).resize(function(){ 
     this.fullScreen(); 
    }); 
    } 
}; 

$(document).ready(function() { 
    PE.functions.fullScreenResize() 
}); 
+0

错误字面意思是“this.functionName不是函数”?如果没有,请提供引用的实际函数名称,以及指出您提供的代码的哪一行位于回溯中​​的异常。 –

+0

对不起错误未捕获TypeError:this.fullScreen不是函数 – Mark

回答

1

fullScreenResize,调用this.fullScreen()this不一定是PE.functions对象,因为传递给resize回调函数有不同的this。为了补救,bind回调函数,以目前的this

fullScreenResize: function screenResize() { 
    $(window).resize(function() { 
     this.fullScreen(); 
    }.bind(this)); 
} 

或者与完整的对象路径PE.functions.fullScreen()更换this.fullScreen()

+0

完美谢谢,现在有道理。 – Mark