您好我正在尝试制作类似于Instagram的图片库,以便在滚动时加载图片。我尝试将它作为一个对象文字变量,但我得到一个未定义的方法为this.showPics ...从ajax成功方法调用getMore。这是一个范围问题,因为在.scroll中调用了滚动条?我该怎么做? BTW showPics定义我只是没有粘贴它..谢谢
var Pics{
showPics: function() {
//loop thru images
}
scroller: function() {
if ($(window).scrollTop() + $(window).height() == $(document).height()) {
this.showPics();
}
}
getMore: function(){
$(window).scroll(this.scroller);
}
}
答案 0 :(得分:2)
更正语法会产生:
var Pics = {
showPics: function() {
//loop thru images
},
scroller: function() {
if ($(window).scrollTop() + $(window).height() == $(document).height()) {
this.showPics();
}
},
getMore: function(){
$(window).scroll(this.scroller);
}
};
您在Pics和成员函数之间的逗号后失去了作业。
编辑:结合@ Karl-AndréGagnon的https://stackoverflow.com/a/25184634/481422回答,它产生类似的东西http://jsfiddle.net/zlatin_zlatev/bue3ytek/
如果您的需要与此类似,请接受Karl-AndréGagnon的评论作为答案。
答案 1 :(得分:1)
在函数中,this
不再引用对象,而是引用窗口。请尝试使用bind
:
$(window).scroll(this.scroller.bind(this));
它会将this
函数中scroller
的引用更改为当前对象。
此外,您的对象中存在语法错误,但我认为您只是为该问题制作了一个伪代码,对吧?