如何使用jQuery通过ID和自定义属性匹配指定可见tr元素
问题根源
你的选择器写法错误:多个属性筛选条件中间加了空格,jQuery 中选择器的空格代表后代选择器,你之前写的tr[id=someID] [someAttribute=' + attributeValue + ']实际逻辑是「查找 id 为 someID 的 tr 元素内部,带有 someAttribute 等于指定值的后代元素」,自然匹配不到目标 tr 本身。
修正方案
多个筛选条件连续书写、中间不加空格,所有条件都会作用在同一个 tr 元素上,同时建议 id 选择器直接用#简写、属性值包裹引号避免特殊字符报错,完整代码如下:
function GetTRValue(){ var attributeValue = 'Attribute1'; // 选择器无空格,所有条件匹配同一个tr元素 var tr = $('tr#someId[someAttribute="' + attributeValue + '"]:visible'); // 增加非空判断避免未匹配到时取值报错 if (tr.length > 0) { var otherAttribute = tr.attr('otherAttribute'); console.log('获取到的otherAttribute值:', otherAttribute); } else { console.log('未匹配到符合条件的元素'); } }
额外注意事项
- 注意 id 大小写要和 HTML 保持一致:你示例中 HTML 里的 id 是
someId(末尾d小写),之前的代码里写的是someID(末尾D大写),如果实际代码里大小写不统一也会匹配失败。 - 自定义属性更推荐遵循 HTML 规范使用
data-前缀命名,比如改为data-some-attribute,读取时可以直接用tr.data('some-attribute'),兼容性更好。
内容的提问来源于stack exchange,提问作者Sandro
相关产品推荐
相关产品推荐

