0

divのブロックをアニメーション化すると同時に、liにクラスを追加したかったのですが、どうすればよいですか?

私のフィドル-http://jsfiddle.net/AsfFQ/4/

「赤」の背景のdivをクリックすると、0pxが左にアニメーション化されます。divのアニメーションの20pxごとにliに「選択された」クラスを追加する方法。

4

2 に答える 2

2

新しいjQuery1.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');
        });
    });    
});    

フィドル </p>

于 2012-08-11T15:40:52.503 に答える
0

このデモをご覧ください。

これが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);
    });
});
于 2012-08-11T15:37:55.213 に答える