1

我喜欢获取此属性的值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>
4

5 回答 5

1

无需使用 .attr 而是使用.data()

$("#testtable").find("tbody tr").each(function () {
    console.log($(this).data("record-key"));
});

JSFiddle

使用.each()更新以获取 all td,有助于迭代对象。

于 2013-08-05T09:41:14.340 回答
1

.attr() 方法仅获取匹配集中第一个元素的属性值。你应该改变你的代码。

$("#testtable").find("tbody tr").map(function(i){

return $(i).attr("data-record-key")
})
于 2013-08-05T09:41:36.403 回答
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]
});

这是一个小提琴

于 2013-08-05T09:45:16.133 回答
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') );
    });
});
于 2013-08-05T09:48:03.470 回答
1

您将使用以下方法获取属性的值:;

jQuery("#testtable tbody tr").attr("data-record-key")

但我不确定你想要获得什么。您将只读取第一个值,并且一个表应该有很多行,对吧?

如果您想要的是获得选定的值,您可以使用:

jQuery("#testtable tbody tr.selected").attr("data-record-key")
于 2013-08-05T09:50:26.090 回答