jquery - 为什么这些动画不是相反的?

标签 jquery

我正在尝试使用 jQuery 反向播放动画。原始动画(完美运行)如下:

    function initialSuccess(){
    $('#box3').animate({
                left: '-50%'
                    }, 300, function() {
            $('#box3').css('left', '150%');
             });

            $('#box3').next().animate({
                left: '50%'
            }, 300);

};
function initialError(){
    $('.step3-tag').html("Whoops, Something Went Wrong");
    $('.loader').replaceWith("<img src='images/error.png' id='error-img'>");
    $('#box3').append("<button class='step3-retry-button' id='retryBtn'>Try Again</button>")
$('#retryBtn').click(function() {


    $('#box3').empty();

    $('#box3').animate({
                left: '150%'
                    }, 300, function() {
            $('#box3').css('left', '150%');
             });

            $('#box3').prev().animate({
                left: '50%'
            }, 300);
             $('#box3').append("<h3 class='step3-tag'>Let Us Check That For You, One Sec!</h3> <div class='loader'></div>")
}

);
}

有什么想法为什么会发生这种情况吗?我也尝试过保持数字不变,但将方向从更改为,但这也不起作用。

添加信息 这是 JsFiddle 示例,我正在尝试反转动画(如果用户按下按钮,则从 div 3 转到 div 2)

http://jsfiddle.net/jtbowden/ykbgT/

添加信息

    function initialSuccess(){
    $('#box3').animate({
                left: '-50%'
                    }, 300, function() {
            $('#box3').css('left', '150%');
             });

            $('#box3').next().animate({
                left: '50%'
            }, 300);

};
function initialError(){
    $('.step3-tag').html("Whoops, Something Went Wrong");
    $('.loader').replaceWith("<img src='images/error.png' id='error-img'>");
    $('#box3').append("<button class='step3-retry-button' id='retryBtn'>Try Again</button>")
$('#retryBtn').click(function() {


    $('#box3').animate({
                left: '-50%'
                    }, 300, function() {
            $('#box3').css('left', '-50%');
             });

            $('#box3').next().animate({
                left: '-50%'
            }, 300);

});
}

initialSuccess() 是结果,然后一切顺利,并导致 div 从屏幕滑到左侧广告被实时的下一个 div 替换。当另一个操作失败时,initialFailure() 会发生,并且应该充当某种“后退”按钮。 initialFailure() 的动画是失败/将 div 推向相同(错误)方向的动画,无论动画本身如何变化。

最佳答案

看起来您需要的是以下一组动画:

$('.box').click(function () {
    $('.box').each(function () {
        if ($(this).offset().left < 0) {
            $(this).animate({
                left: '50%',
            }, 500);
        } else if ($(this).offset().left > $('#container').width()) {
            $(this).css("left", "-150%");
        } else {
            $(this).animate({
                left: '150%',
            }, 500);
        }
    });
});

您可以在 http://jsfiddle.net/af88ukfx/1/ 查看包含 2 组动画的完整示例。

更新

我仍然不确定你的确切布局是什么以及到底应该发生什么,但我疯狂猜测我认为你需要这样的东西:

function initialError2() {
    $('.step3-tag').html("Whoops, Something Went Wrong");
    $('.loader').replaceWith("<img src='images/error.png' id='error-img'>");
    $('#box3').append("<button class='step3-retry-button' id='retryBtn'>Try Again</button>")
    $('#retryBtn').click(function () {
        $('#box3').animate({
            left: '150%'
        }, 300);

        $('#box3').prev().animate({
            left: '50%'
        }, 300);
    });
}

关于jquery - 为什么这些动画不是相反的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43061918/

相关文章:

php - AJAX JSON 加载 jQuery 数据表

javascript - Jquery的自增nth-child选择器

javascript - 如何在工具提示中包含类别数据

Javascript:精​​确的奇怪行为

jquery - 查找字体大小大于指定的元素

javascript - 无法在 bootstrap Modal 中显示 div

javascript - 如何停止声音警报?

jquery - 如何在 jQuery 代码运行时显示加载消息?

javascript - 使用 PHP 和 javascript 将数据替换为 json 文件

JQuery 事件处理