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

求助:通过类名与data属性选中jQuery元素并设置禁用的代码无效

问题解决:通过类名+data属性禁用按钮

你的代码存在两处可优化的点,调整后即可正常工作:

方案1:直接操作触发事件的元素(最简洁高效)

点击事件绑定在目标按钮上,直接用$(this)就能获取当前点击的按钮,无需通过选择器重新查找:

<button type="button" data-pid="23" class="add" tabindex="0">click me</button>

<script>
$(".add").on("click", function(e) {
    e.preventDefault();
    // 直接操作当前点击的按钮,设置disabled状态
    $(this).prop("disabled", true);
}); 
</script>

方案2:保留类名+data属性选择器的写法

如果确实需要通过选择器定位元素,注意规范选择器的引号写法,同时改用prop()设置状态:

<button type="button" data-pid="23" class="add" tabindex="0">click me</button>

<script>
$(".add").on("click", function(e) {
    e.preventDefault();
    var pid = $(this).data('pid'); // 用data()方法获取data属性更规范
    $('.add[data-pid="' + pid + '"]').prop("disabled", true);
}); 
</script>

关键说明

  • 对于disabled这类布尔属性,jQuery官方推荐使用prop()方法而非attr():prop()直接操作DOM元素的状态属性,能准确设置和读取布尔值;attr()操作的是HTML标签上的属性,处理布尔属性时易出现状态不一致问题。
  • 使用$(this)可避免重复查找DOM元素,提升代码效率,同时减少选择器写错的概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:12:04