我想获得此属性data-record-key
的值,但我使用此行它会返回undefined
,有什么帮助吗?
$("#testtable").find("tbody tr").attr("data-record-key")
<table id ="testtable">
<tbody>
<tr data-record-key="0">
<td>ALL</td></tr>
<tr data-record-key="1">
<td>ONE</td></tr>
</tbody>
</table>
答案 0 :(得分:1)
无需使用.attr而是使用.data()
$("#testtable").find("tbody tr").each(function () {
console.log($(this).data("record-key"));
});
已更新 .each() 以获取所有td
,有助于迭代该对象。
答案 1 :(得分:1)
.attr()方法仅获取匹配集中第一个元素的属性值。 你应该改变你的代码。
$("#testtable").find("tbody tr").map(function(i){
return $(i).attr("data-record-key")
})
答案 2 :(得分:1)
您可以直接选择data-record-key
的元素,并获取其值:
$(document).ready(function() {
var recordKeys = $('[data-record-key]').map(function() {
return $(this).data('recordKey');
}).get();
console.log(recordKeys); // outputs: [0, 1]
});
答案 3 :(得分:1)
您的代码生成undefined
因为您没有将其包装在DOM就绪函数中。这意味着您的代码在DOM元素可用之前执行。改为:
$(document).ready(function(){
$("#testtable").find("tbody tr").data("record-key");
});
为此,应该使用 .data()
代替.attr()
,但这不会导致代码返回未定义,它仍然可以工作(只要您准备好使用DOM)。
此外,如果你想获得所有data-record-key
而不是第一个,那么你需要一个循环:
$(document).ready(function(){
$.each($("#testtable").find("tbody tr"), function(i, val){
console.log( $(this).data('record-key') );
});
});
答案 4 :(得分:1)
您将使用:;
获取属性的值jQuery("#testtable tbody tr").attr("data-record-key")
但我不确定你想要获得什么。你将只读取第一个值,一个表应该有很多行,对吧?
如果你想要的是获得所选的值,你可以使用:
jQuery("#testtable tbody tr.selected").attr("data-record-key")