jQuery中如何在closest选中的tr内查找自定义属性data-colname=ctv的元素
你提供的属性选择器写法本身没有语法错误,给出的可运行片段实际测试可以正常将data-colname="ctv"的单元格文字修改为绿色。如果在你的实际项目中不生效,可以按照以下方向排查:
- 检查属性值大小写是否完全匹配:jQuery的属性选择器是大小写敏感的,若HTML中属性值为
Ctv、CTV等非全小写ctv的写法都会匹配失败 - 确认事件绑定的时机:如果你的表格内容是动态生成(比如AJAX请求后渲染、JS动态插入),绑定时
.mybutton元素还不存在于DOM中,会导致绑定失效,改用事件委托写法即可:
// 委托到页面初始就存在的父元素,比如document、表格外层容器均可 $(document).on("click", ".mybutton", function(){ $(this).closest("tr").find("[data-colname='ctv']").css("color", "green"); });
- 检查样式覆盖:如果有更高优先级的CSS规则给对应td设置了文字颜色,会覆盖JS设置的行内样式,可打开浏览器开发者工具的元素样式面板确认
- 如果你是通过
$.data()方法给元素设置的colname值,而非直接写在HTML标签的属性中,属性选择器无法匹配,改用filter方法筛选即可:
$(this).closest("tr").find("td").filter(function(){ return $(this).data("colname") === "ctv"; }).css("color", "green");
- 确认你引用的jQuery版本支持属性选择器,你示例中使用的jQuery3.3.1是完全支持的,若项目中使用了极低版本的jQuery可以尝试升级版本
内容的提问来源于stack exchange,提问作者Abilash Erikson
相关产品推荐
相关产品推荐

