使用jQuery插件移动元素 - setInterval

时间:2013-09-07 19:33:56

标签: javascript jquery jquery-plugins

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

(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/

2 个答案:

答案 0 :(得分:0)

你的问题是this在setTimeout函数文字中有不同的含义(窗口对象)。请查看this answer以获取有关不同背景下this的更多信息。

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

答案 1 :(得分: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);