You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

产品轮播图仅首个加入购物车按钮显示Spinner问题求助

解决轮播图中仅首个加入购物车按钮显示加载Spinner的问题

问题根源

你代码里的所有加入购物车按钮都用了同一个id="spinner-btn",但HTML规范里ID必须是唯一的。jQuery通过ID选择器$("#spinner-btn")只会找到页面中第一个匹配该ID的元素,所以只有第一个按钮点击后会显示Spinner,其他按钮完全没反应。

修复步骤

  1. 修改HTML按钮标识:把所有按钮的id='spinner-btn'替换成class='spinner-btn',类(class)可以在多个元素上重复使用。
  2. 调整JavaScript选择器:把jQuery选择器从$("#spinner-btn")改成$(".spinner-btn"),这样就能选中所有带这个类的按钮。
  3. 修正按钮禁用逻辑:原代码里$(this).prop("disabled", false)是设置按钮可点击,这和加载状态的需求相反,应该改成true,防止用户重复点击。
  4. 阻止默认跳转:因为按钮是<a>标签,点击会触发跳转,需添加e.preventDefault()避免页面刷新导致Spinner刚显示就消失。

修改后的完整代码

轮播图HTML代码

<div class="carousel-multiple owl-carousel owl-theme">
    <div class='item'>
        <div class="card product-card">
            <div class="card-body">
                <img src="assets/img/sample/photo/product1.jpg" class="image" alt="product image">
                <h2 class="title">Apple</h2>
                <p class="text">1 kg</p>
                <div class="price">$ 1.50</div>
                <a href="#" class="btn btn-sm btn-primary btn-block spinner-btn">ADD TO CART</a>
            </div>
        </div>
    </div>
    <div class='item'>
        <div class="card product-card">
            <div class="card-body">
                <img src="assets/img/sample/photo/product1.jpg" class="image" alt="product image">
                <h2 class="title">Apple</h2>
                <p class="text">1 kg</p>
                <div class="price">$ 1.50</div>
                <a href="#" class="btn btn-sm btn-primary btn-block spinner-btn">ADD TO CART</a>
            </div>
        </div>
    </div>
    <div class='item'>
        <div class="card product-card">
            <div class="card-body">
                <img src="assets/img/sample/photo/product1.jpg" class="image" alt="product image">
                <h2 class="title">Apple</h2>
                <p class="text">1 kg</p>
                <div class="price">$ 1.50</div>
                <a href="#" class="btn btn-sm btn-primary btn-block spinner-btn">ADD TO CART</a>
            </div>
        </div>
    </div>
</div>

JavaScript代码

$(document).ready(function () {
    $(".spinner-btn").click(function (e) {
        // 阻止a标签默认跳转行为
        e.preventDefault();
        // 禁用按钮,防止重复点击
        $(this).prop("disabled", true);
        // 添加Spinner到按钮
        $(this).html(
            '<span class="spinner-border spinner-border-sm mr-05" role="status" aria-hidden="true"></span> Loading'
        );
    });
});

内容的提问来源于stack exchange,提问作者Oscar John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 14:06:18