动画并同时向li添加类

时间:2012-08-11 15:22:15

标签: javascript jquery

我想为div块制作动画,同时也为li添加课程,我该怎么做?

我的小提琴 - http://jsfiddle.net/AsfFQ/4/

当我点击“红色”背景中的div时,它会向左移动0px。如何为div的每20px动画添加一个“选定”的类。

2 个答案:

答案 0 :(得分:2)

如果使用新的jQuery 1.8,你可以实际执行一个动画并获得一个回复,返回的对象也包含动画状态,补间等,你可以使用它来计算应用该类的元素,这个有点实验性的,我刚刚开始玩这个,但有点像:

$(function() {
    $('.block').on('click', function(){
        var ani = $.Animation( this, {left:0}, {duration: 1000} );

        ani.progress(function(e) {
            var Now = e.tweens[0].now,
                idx = Math.round(Now/10);
            $(".container ul li").eq(idx).addClass('selected').siblings().removeClass('selected');
        });
    });    
});    

FIDDLE

答案 1 :(得分:0)

看看这个DEMO

这是Javascript:

var timer, 
    selectLi = (function() {
        var $block = $('.block'),
            $container = $('.container'),
            $lis = $('.container ul li'),
            liWidth = $lis.width(),
            $selectedLi;

        return function() {
            var pos = $block.offset().left - $container.offset().left,
                liNum = Math.round(pos / liWidth);
            $selectedLi && $selectedLi.removeClass('selected');
            $selectedLi = $($lis.get(liNum));
            $selectedLi.addClass('selected');
        };
    })();

$('.block').click(function() {
    timer = setInterval(selectLi, 30);
    $(this).animate({
        left: 0
    }, function() {
        clearInterval(timer);
    });
});