jQuery UI小部件创建范围问题

时间:2012-03-25 20:40:30

标签: javascript jquery jquery-ui jquery-plugins

我正试图在我的_create中调用cycle_pages,但是我遇到了一些范围问题。一旦我调用setTimeout,我就改成了窗口的范围而不是我的匿名函数。我尝试了一些东西。最符合逻辑的似乎是

function cycle_pages(){
    console.log("hello");
    change_page(1);
    setTimeout(function (self) {
        self.cycle_pages();
    }, 1000);
}

但我也尝试了

的变体
function cycle_pages(){
    console.log("hello");
    change_page(1);
    setTimeout('cycle_pages()', 1000);
}

我尝试将函数移动到全局范围,但这会导致change_page()超出范围。

任何提示?完全粘贴http://jsfiddle.net/vn7Re/1/

2 个答案:

答案 0 :(得分:1)

你可以让这更简单:

function cycle_pages(){
    console.log("hello");
    change_page(1);
    setTimeout(cycle_pages, 1000);
}

您不需要在setTimeout中创建匿名函数。

答案 1 :(得分:0)

setTimeout函数在调用时没有提供任何参数,所以你可能想要更像这样的东西:

function cycle_pages() {
    var self = this;
    change_page(1);
    setTimeout(function() {
        self.cycle_pages();
    }, 1000);
}