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

如何在指定元素值为-1时隐藏表格行?jQuery change对div无效

问题解决建议

你的代码无效的核心原因是:如果.dd-selected-value是第三方插件生成的元素(比如自定义下拉组件的隐藏输入框),插件更新其值时没有触发原生的change事件,导致你的事件监听器无法捕获值变化。另外也需要确保初始加载时就根据当前值处理目标元素的显示状态。

以下是两种可行的解决方案:

方案一:使用MutationObserver监听值变化

通过监听输入框的value属性变化,无论值是通过插件还是其他方式更新,都能捕获到:

const targetInput = $('.wooco_component_product[data-name="Kaartje"] input.dd-selected-value')[0];
if (targetInput) {
  // 创建观察者实例,监听value属性变化
  const observer = new MutationObserver(mutations => {
    mutations.forEach(mutation => {
      if (mutation.attributeName === 'value') {
        const currentValue = targetInput.value;
        $('.card-text-field').toggleClass('hidden-card-text-field', currentValue === "-1");
      }
    });
  });

  // 配置观察规则:只监听value属性
  observer.observe(targetInput, { attributes: true, attributeFilter: ['value'] });

  // 页面加载时先执行一次状态判断
  $('.card-text-field').toggleClass('hidden-card-text-field', targetInput.value === "-1");
}

方案二:监听下拉选项的点击事件

如果是自定义下拉组件,直接监听选项的点击事件,触发状态更新:

// 监听下拉选项的点击(适配插件的DOM结构,若选项类名不同需调整)
$(document).on('click', '.wooco_component_product[data-name="Kaartje"] .dd-option', function() {
  const selectedValue = $(this).data('value'); // 若插件用其他属性存值,替换成对应属性
  $('.card-text-field').toggleClass('hidden-card-text-field', selectedValue === "-1");
});

// 页面加载时初始化状态
const initialValue = $('.wooco_component_product[data-name="Kaartje"] input.dd-selected-value').val();
$('.card-text-field').toggleClass('hidden-card-text-field', initialValue === "-1");

关键说明

  • 用toggleClass替代手动判断添加/移除类,代码更简洁
  • 必须添加初始状态检查,确保页面加载时就根据当前选中值显示/隐藏目标元素
  • 若方案二中选项的类名或值存储属性与实际不符,需根据页面DOM结构调整选择器和属性名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:22:40