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

如何用jQuery禁用特定值按钮?现有代码仅部分生效

问题分析与解决方案

问题根源

你的代码只禁用了value为1的按钮,核心原因有两个:

  1. 遍历方式错误:用for...in遍历数组pls时,拿到的el是数组的索引(字符串类型的"0"、"1"),不是数组里的目标数值(45、1)。只有value为"1"的按钮刚好和索引"1"匹配,才被禁用;而45对应的索引是"0",没有匹配的按钮,所以未生效。
  2. 数组结构冗余:pls是二维数组(每个元素都是子数组,比如[45]),即使拿到数组元素,也需要额外提取子数组内的数值才能匹配按钮的value。
  3. 类型不统一:attr("value")返回字符串类型,和数字直接比较可能出现隐式转换问题。

解决方案

下面提供几种简洁高效的修正写法:

方法一:简化数组结构 + 直接定位元素(推荐)

把二维数组改成一维数组,通过属性选择器直接定位目标按钮,无需遍历所有.seat元素:

var pls = [45, 1];
pls.forEach(function(num) {
  $('.seat[value="' + num + '"]').prop('disabled', true);
});

方法二:保留原二维数组结构

如果必须保留二维数组,需要提取子数组内的数值,同时改用正确的数组遍历方式:

var pls = [[45], [1]];
pls.forEach(function(item) {
  var targetValue = item[0]; // 提取子数组中的目标数值
  $('.seat').each(function() {
    // 统一类型后再比较,避免隐式转换问题
    if (parseInt($(this).attr('value'), 10) === targetValue) {
      $(this).prop('disabled', true);
    }
  });
});

方法三:用jQuery的$.each遍历数组

如果习惯用jQuery的遍历方法,也可以这样写:

var pls = [45, 1];
$.each(pls, function(index, num) {
  $('.seat[value="' + num + '"]').prop('disabled', true);
});

内容的提问来源于stack exchange,提问作者Егор

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 19:03:26