对象文字滚动中的未定义函数

时间:2014-08-07 13:58:55

标签: javascript jquery object-literal

您好我正在尝试制作类似于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);
    }
}

2 个答案:

答案 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的引用更改为当前对象。

此外,您的对象中存在语法错误,但我认为您只是为该问题制作了一个伪代码,对吧?