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

JS/jQuery实现点击色块显示title匹配productTrim的bundle--form

问题根因

你的代码没生效是三个核心逻辑错误导致的:

  • 先把所有.bundle--form父容器全部设置为隐藏,后续再调用.show()显示容器内部的a标签,父元素处于隐藏状态时,内部子元素无论怎么设置都无法展示
  • 用[style="display: block;"]匹配当前选中的商品容器非常脆弱,只要display属性值多一个空格、或者样式是通过CSS类控制的,就会匹配失败
  • 额外取BundleName做等值判断属于冗余逻辑,多做了一次DOM查询还容易因为属性值带特殊字符出现匹配异常
可直接运行的jQuery实现
$(function() {
  // 绑定色块点击事件
  $('.icon--drop').on('click', function () {
    // 获取当前展示的商品名,去除首尾空白字符
    const currentProductName = $.trim($('.super-color-variant:visible .product--title').text());
    
    // 第一步:先隐藏所有套餐表单
    $('.bundle--form').hide();
    // 第二步:筛选出内部a标签title和当前商品名完全匹配的套餐容器,直接显示该容器
    $('.bundle--form').has(`.bundle--product-name a[title="${currentProductName}"]`).show();
  });

  // 页面加载完成后默认执行一次匹配,首屏就展示正确的套餐项
  $('.color-drop-link.selected .icon--drop').trigger('click');
});
原生JS实现(无jQuery依赖)
document.addEventListener('DOMContentLoaded', () => {
  const colorDots = document.querySelectorAll('.icon--drop');
  // 绑定点击事件
  colorDots.forEach(dot => {
    dot.addEventListener('click', () => {
      // 获取当前可见的商品变体标题
      const activeVariant = document.querySelector('.super-color-variant');
      const activeProductName = activeVariant.querySelector('.product--title').textContent.trim();
      
      // 遍历所有套餐容器
      document.querySelectorAll('.bundle--form').forEach(form => {
        // 先默认隐藏
        form.style.display = 'none';
        // 检查容器内是否存在匹配title的商品链接
        const isMatch = form.querySelector(`a[title="${activeProductName}"]`);
        if (isMatch) form.style.display = 'block';
      })
    })
  })

  // 初始化触发默认选中色块的点击逻辑
  document.querySelector('.color-drop-link.selected .icon--drop')?.click();
})
实现说明
  • 用:visible(jQuery)或者直接取激活态变体的方式匹配当前选中商品,避免硬编码style属性值导致的匹配失败
  • 直接操作套餐父容器的显示/隐藏,不要在父容器隐藏的状态下修改子元素的显示属性,属于无效操作
  • 用.has()(jQuery)或querySelector判断父容器内是否存在目标元素,比单独取属性值做字符串比对更可靠,还能减少DOM查询次数
  • 增加初始化执行逻辑,页面首次加载不需要用户点击就能展示匹配的套餐项,体验更完整

内容的提问来源于stack exchange,提问作者that guy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:01:48