0

为什么这段代码不起作用?
我写了这段代码但是:

(function($){
$.fn.newsSlider = function() {
    setTimeout(function() {
        this.each( function() {
            $(this).each(function(){
                $(this).append($(this).children(":first-child").clone());
                $(this).children(":first-child").remove();
            });
        });
    }, 3000);
}

}(jQuery));

使用 setInterval: http:
//jsfiddle.net/OmidJackson/46UNg/
没有 setInterval:http:
//jsfiddle.net/OmidJackson/6bKWU/

4

2 回答 2

0

您的问题是this在 setTimeout 函数文字中具有不同的含义(窗口对象)。检查此答案this以获取有关不同上下文的更多信息。

解决方案是保存对的引用,this以便您可以在 setTimeout 中使用它。
请参阅此示例

于 2013-09-07T20:38:43.077 回答
0

您需要存储它,this因为它当前的值为window

var $this = this;
setTimeout(function() {
    $this.each( function() {
        $(this).each(function(){
            $(this).append($(this).children(":first-child").clone());
            $(this).children(":first-child").remove();
        });
    });
}, 3000);
于 2013-09-07T20:40:57.017 回答