0

我找不到这个简单示例代码的解决方案。这是几个 DOM 对象上的连续动画,需要在每个对象的悬停关闭时删除。如何删除实例化的函数?提前致谢!

var animBorderColor = function(targetElement, color, speed){
    $(targetElement).animate(
    {
        borderColor: 'rgba('+color+','+color+','+color+', 0.7)'
    }, 
    { 
    duration: speed, 
    complete: function(){
        if ( color == '100' ) { color = '200'; } else { color = '100';
        }
            animBorderColor(this, color, speed);
        }
    }
    );
};

$(document).ready(function(){
    $("#obj1").hover(
    function(){
        animBorderColor($(this), '100', 500);
    },
    function() {
        // ?? remove function instantiated above
    });

    $("#obj2").hover(
    function(){
        animBorderColor($(this), '100', 500);
    },
    function() {
        // ?? remove function instantiated above
    });
});

编辑:Jsfiddle 示例

4

1 回答 1

0

我认为解决这个问题的最好方法是间隔。您可以设置动画间隔,然后清除该间隔以停止动画。

此外,由于您正在尝试为颜色设置动画,因此请确保您也在使用 jQuery UI。

示例代码:

function borderAnimate() {
    var color = $(this).css('borderTopColor').indexOf('rgba(100') > -1 ? 'rgba(200,200,200,0.7)' : 'rgba(100,100,100,0.7)';
    $(this).animate({
        borderTopColor: color,
        borderLeftColor: color,
        borderBottomColor: color,
        borderRightColor: color
    }, 500);
}
$('div').hover(function () {
    $this = this;
    window.loop = setInterval(function () {
        borderAnimate.call($this);
    }, 500);
}, function () {
    clearInterval(window.loop);
});

这是一个小提琴

于 2013-08-27T21:18:14.193 回答