javascript - 结帐径向进度条事件

标签 javascript jquery css progress-bar checkout

我已经创建了带有一些动画和过渡的径向结帐进度条。在按钮上添加了事件。但问题是我在结帐的每个步骤都有不同的内容。什么是最佳实践。最好使用数据属性吗?为了这。内容应该隐藏和显示某些结帐。 codepen

    <div class="step-1" id="checkout-progress" data-current-step="1">
    <div class="progress-bar">
        <div class="step step-1 active " data-step="1"><span> 1</span>
            <div class="step-check">t</div>
            <div class="step-label"> address</div>
        </div>
        <div class="step step-2" data-step="2"><span> 2</span>
            <div class="step-check">a</div>
            <div class="step-label"> shipping</div>
        </div>
        <div class="step step-3" data-step="3"><span> 3</span>
            <div class="step-check">b</div>
            <div class="step-label"> payment</div>
        </div>
        <div class="step step-4" data-step="4"><span> 4</span>
            <div class="step-check">3</div>
            <div class="step-label"> summary</div>
        </div>
    </div>
</div>
<!-- <div class="button-container">
    <div class="btn btn-prev"> previous step</div>
    <div class="btn btn-next"> next step</div>
</div> -->


<div class="checkout-content" data-step="1">
    <h1>checkout content 1</h1>
    <div class="btn btn-next"> next step</div>
    <div class="btn btn-next"> next step</div>
</div>
<div class="checkout-content" data-step="2">
    <h1>checkout content 2</h1>
    <div class="btn btn-next"> next step</div>
    <div class="btn btn-next"> next step</div>
</div>
<div class="checkout-content" data-step="3">
    <h1>checkout content 3</h1>
    <div class="btn btn-next"> next step</div>
    <div class="btn btn-next"> next step</div>
</div>
<div class="checkout-content" data-step="4">
    <h1>checkout content 4</h1>
    <div class="btn btn-next"> next step</div>
    <div class="btn btn-next"> next step</div>
</div>


$('.btn-next').on('click', function() {

    var currentStepNum = $('#checkout-progress').data('current-step');
    var nextStepNum = (currentStepNum + 1);
    var currentStep = $('.step.step-' + currentStepNum);
    var nextStep = $('.step.step-' + nextStepNum);
    var progressBar = $('#checkout-progress');
    $('.btn-prev').removeClass('disabled');
    if(currentStepNum == 5) {
        return false;
    }
    if(nextStepNum == 5){
        $(this).addClass('disabled');
    }
    // $('.checkout-progress').removeClass('.step-' + currentStepNum).addClass('.step-' + (currentStepNum + 1));

    currentStep.removeClass('active').addClass('valid');
    currentStep.find('span').addClass('opaque');
    currentStep.find('.step-check').removeClass('opaque');

    nextStep.addClass('active');
    progressBar.removeAttr('class').addClass('step-' + nextStepNum).data('current-step', nextStepNum);
});


$('.btn-prev').on('click', function() {

    var currentStepNum = $('#checkout-progress').data('current-step');
    var prevStepNum = (currentStepNum - 1);
    var currentStep = $('.step.step-' + currentStepNum);
    var prevStep = $('.step.step-' + prevStepNum);
    var progressBar = $('#checkout-progress');
    $('.btn-next').removeClass('disabled');
    if(currentStepNum == 1) {
        return false;
    }
    if(prevStepNum == 1){
        $(this).addClass('disabled');
    }
    // $('.checkout-progress').removeClass('.step-' + currentStepNum).addClass('.step-' + (prevStepNum));

    currentStep.removeClass('active');
    prevStep.find('span').removeClass('opaque');
    prevStep.find('.step-check').addClass('opaque');

    prevStep.addClass('active').removeClass('valid');
    progressBar.removeAttr('class').addClass('step-' + prevStepNum).data('current-step', prevStepNum);
});

最佳答案

为什么要在每个阶段的“包含”部分重复操作(下一个和上一个)按钮。将其设为名为 .actions 的新部分,然后您可以将操作按钮放在它们的... 然后你可以拥有 data-target 属性,它保存点击时需要到达的 stepNumber 的值......

每次点击您希望用户下一步移动到的位置时,您都需要更改 data-target 属性...对于 pev 按钮也一样...

关于javascript - 结帐径向进度条事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41437595/

相关文章:

jQuery 什么更快 : selectors or methods?

javascript - 如何从选定的 li 中获取值?

php - 基于 Woocommerce 中自定义单选按钮的动态运费

javascript - 无法使用 AngularJS + Stormpath 提交表单

javascript - jQuery - 切换文本以在单击时更改

javascript - 如何将数据绑定(bind)到 DOM 元素的 CSS 顶部、左侧、宽度和高度?

html - 水平和垂直滚动 HTML 表格,同时左列固定

css - 如何让 child 漂浮在固定容器中并排的元素内?

php - 设置 php 电子邮件的样式以允许 Microsoft Outlook 阅读样式

javascript - 浏览器渲染和 JavaScript 执行是否同时发生?