Javascript 从所选行获取第三个属性
获取表行元素的最佳方法是什么? 我有这个网格,它是一个动态添加的网格。每个Javascript 从所选行获取第三个属性,javascript,jquery,Javascript,Jquery,获取表行元素的最佳方法是什么? 我有这个网格,它是一个动态添加的网格。每个td都有class='dxgv' 第一列是一个可选列,其中包含行的id,但我需要在客户端知道所选行的第三个属性。(第二节,惩罚) 我想我可以做这样的事情: var td = $(".dxgv").find("td:eq(3)").val(); $('tr:has(input:checked) td:eq(2)').text(); 我会得到这个值,但它不起作用 我尝试了答案,但我无法解决问题。 例如,如果我使用 v
td
都有class='dxgv'
第一列是一个可选列,其中包含行的id,但我需要在客户端知道所选行的第三个属性。(第二节,惩罚)
我想我可以做这样的事情:
var td = $(".dxgv").find("td:eq(3)").val();
$('tr:has(input:checked) td:eq(2)').text();
我会得到这个值,但它不起作用
我尝试了答案,但我无法解决问题。
例如,如果我使用
var ee = $('tr:has(input:checked) td:eq(3)').text();
var td = $(".dxgv:eq(2)").text();
console.log('Textbox value at row ' + i + ': ' + td);
console.log('ee value at row ' + i + ': ' + ee);
我明白了:
除非您有某种输入元素,
.val()
将无法工作。您可以使用.html()
或.text()
代替:
var td = $(".dxgv").eq(2).text(); // note .eq(2), because the function is zero-based.
您的JQuery逻辑有点不正确,但几乎没有
var td = $(".dxgv").find("td:eq(3)").val();
上面使用的代码片段告诉浏览器在类为.dxgv
的元素中查找第三个
元素。但根据您提供的屏幕截图,问题显而易见:
- 它是
本身拥有的类 - 该单元格是第三个单元格(索引为
,而不是2
)3
var td = $(".dxgv").eq(2).text();
这些变化:
- 使用
过滤当前选择,以便获得第三个.eq(2)
元素。记住JS使用了一个从零开始的索引(第三个元素的索引为.dxgv
)2
- 使用
访问元素的文本内容.text()
$('button')。在('click',function()上{
var td=$('.dxgv').eq(2).text();
console.log(td);
});代码>
24/04/2018
偏见
单击以从第三个单元格获取文本
您几乎是对的,但有一些小错误:
1) .find()
获取作为所选内容子项的元素。您的tds是选择项,并且没有子项,因此这将找不到任何内容。相反,您需要直接从集合中选择第三个元素
2) .val()
从文本框等表单字段获取值。要从非表单元素(如td)获取值,需要使用.text()
3) eq()
使用零索引,因此要获取第三个元素,实际上需要请求元素2
$(函数(){
var td=$(“.dxgv:eq(2)”).text();
console.log(td);
});代码>
第一
第二
第三
第四
第五
这是因为jQuery的find()
看起来在您已经选择的元素内部。因此,您给出的代码在每个.dxgv
中查找第四个元素(第一个元素的索引为0)td
,该元素不存在。
此外,由于它不是一个输入
元素,因此需要的是内部文本,而不是其值
您可能正在寻找类似以下内容:
var td = $(".dxgv").find("td:eq(3)").val();
$('tr:has(input:checked) td:eq(2)').text();
这将选择每个内部有选中的输入的tr
,然后从中选择第三个td
请注意,text()
从匹配的每个元素中获取文本,并将它们组合成一个字符串,因此如果您希望支持多行选择,则需要使用jQuery函数将它们逐个添加到数组中。.val()不会返回任何内容,因为td不是表单元素。查看已发布的所有其他答案…@ADyson fair point,我相应地更新了我的答案。由于某种原因,我在写我的答案时没有看到其他答案。没问题。现在看起来不错。对在行中添加限制搜索的复选框进行投票,其他人没有提到。我已经编辑了这个问题,请您看一看。@Kar如果您不共享您的标记并创建MCVE,我们真的无能为力。请参阅和。我已经编辑了这个问题,请您看一看。@Kar您何时何地运行代码来打印这些控制台值?从我的答案中的可运行代码段可以看出,我使用的代码确实有效。上下文就是一切……也许您是在创建表行之前运行此代码,或者其他什么?您的问题不清楚页面是如何格式化的,以及是什么触发了获取文本的逻辑。请更新您的问题,以包含重现问题所需的最少代码。见和。