为什么这个jquery函数在两个.animate()之后都没有重复?

时间:2014-05-20 12:17:47

标签: javascript jquery

有什么理由说明为什么这个功能不会重复?

var $title = $('#title');
var animateGlow = function($title) {
    $title.animate({ 'color':'red' }, 2000)
        .animate({ 'color':'blue' }, 2000, function() {
            animateGlow(this);
    });
};
animateGlow($title);

3 个答案:

答案 0 :(得分:2)

通过$(this)代替this,原生对象没有animate功能

使用

var $title = $('#title');
var animateGlow = function ($title) {
    $title.animate({
        'color': 'red'
    }, 2000).animate({
        'color': 'blue'
    }, 2000, function () {
        animateGlow($(this));
    });
};
animateGlow($title);

答案 1 :(得分:1)

尝试使用end()方法:

var $title = $('#title');
var animateGlow = function($title) {
    $title.animate({ 'color':'red' }, 2000).end()
        .animate({ 'color':'blue' }, 2000, function() {
            animateGlow($title);//replaced this with $title 
    });
};
animateGlow($title);

答案 2 :(得分:1)

您正在使用元素引用而不是jQuery对象调用该函数。使用$(this)换行元素,或者更好地使用$title变量中已有的元素:

var $title = $('#title');
var animateGlow = function($title) {
    $title.animate({ 'color':'red' }, 2000)
        .animate({ 'color':'blue' }, 2000, function() {
            animateGlow($title);
    });
};
animateGlow($title);