如何使用jQuery从表中获取值

时间:2013-08-05 09:40:01

标签: jquery

我想获得此属性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>

5 个答案:

答案 0 :(得分:1)

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

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

JSFiddle

已更新 .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]
});

Here's a fiddle

答案 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")