无法获取表格行中单元格的cellIndex问题求助
问题分析与修复方案
你的代码里有几个关键问题导致无法获取cellIndex,我来一步步帮你解决:
1. 选择器语法错误 + 匹配逻辑不对
你写的jQuery('td'[value='someValue'])语法完全错误,而且你的HTML里<td>并没有value属性,它的文本内容是someValue,所以正确的选择方式应该是用:contains选择器,或者更精准的.filter()方法(避免匹配到包含该文本的其他元素):
// 方式1: 使用:contains(简单但可能匹配到包含该文本的其他td) const $targetTd = jQuery('td:contains("someValue")'); // 方式2: 精准匹配文本内容(推荐) const $targetTd = jQuery('td').filter(function() { return jQuery(this).text().trim() === 'someValue'; });
2. this指向错误
你在if语句里直接用jQuery(this),这里的this根本不是指向找到的<td>元素(因为没有事件上下文或者遍历上下文)。你需要先确认是否找到了目标元素,然后直接从选中的jQuery对象中获取DOM元素来访问cellIndex。
3. jQuery对象没有cellIndex属性
cellIndex是原生DOM元素的属性,jQuery包装后的对象没有这个属性,所以需要把jQuery对象转换成原生DOM元素(比如用[0]或者.get(0))。
完整修复后的代码
// 精准匹配文本为someValue的td const $targetTd = jQuery('td').filter(function() { return jQuery(this).text().trim() === 'someValue'; }); // 先判断是否找到元素 if ($targetTd.length > 0) { // 转成原生DOM元素后获取cellIndex const cellIndex = $targetTd[0].cellIndex; console.log(cellIndex); // 这里会输出0,因为是tr里的第一个td }
额外说明
如果你确实是想用value属性匹配(比如你的HTML里td有value属性的话),那正确的选择器应该是jQuery('td[value="someValue"]'),注意引号的位置,不要把选择器拆分开。
内容的提问来源于stack exchange,提问作者JKortmann
相关产品推荐
相关产品推荐

