Javascript Can';无法从HTML获取表值

Javascript Can';无法从HTML获取表值,javascript,jquery,Javascript,Jquery,我想在这里获得以下信息: 因为我需要它从数据库中获取数据(主键)。但要得到这个值很难。文档准备好后,我运行以下JavaScript来创建表: function GetActivityAbstracts() { $.getJSON("http://localhost:52535/ExampleService.svc/GetTestTableData", function (testData) { var object = $.parseJSON(testData);

我想在这里获得以下信息:

因为我需要它从数据库中获取数据(主键)。但要得到这个值很难。文档准备好后,我运行以下JavaScript来创建表:

function GetActivityAbstracts() {
    $.getJSON("http://localhost:52535/ExampleService.svc/GetTestTableData", function (testData) {
        var object = $.parseJSON(testData);
        var activityTable = $('#activityTable');

        // create HTML only by using $.map, it's better for perfs to generate all HTML before adding it into the dom
        var html = $.map(object, function (item, index) {
            //index here is used to generate unique ids
            var activityId = item['ActivityId'];
            var activityName = item['ActivityName'];
            var activityResponsible = item['Responsible'];
            var activityEstimatedSavings = parseFloat(item['EstimatedSavings']).toFixed(2);
            var activityEstimatedStart = item['EstimatedStart'];
            var activityEstimatedEnd = item['EstimatedEnd'];
            var activityStatus = item['Status'];
            // TODO: Make more user-friendly Status Descriptions instead of C# enum values.
            // move id  attr on on <tr> 
            return '<tr id="activityId_' + index + '">' +
                    '<td data-id="' + activityId + 
                    '" style = "vertical-align: middle; align: center;">'
                    + activityId + '</td>' +
                    '<td style = "vertical-align: middle;">' +
                    '<div class="status-circle" data-toggle="tooltip" data-placement="right"' +
                    'title=" ' + activityStatus + '" style="background-color:' +
                    GetColumnColor(activityStatus) + ';"></div></td>' +
                    '<td id = "activityName_' + index + '" style = "vertical-align: middle;">'
                    + activityName + '</td>' +
                    //Add index for ids here
                    '<td style = "vertical-align: middle;">'
                    + activityResponsible + '</td>' +
                    '<td style = "vertical-align: middle;">'
                    + activityEstimatedSavings + '</td>' +
                    '<td style = "vertical-align: middle;">'
                    + activityEstimatedStart + '</td>' +
                    '<td style = "vertical-align: middle;">'
                    + activityEstimatedEnd + '</td>' +
                    '</tr>';

        });
        // Add HTML into activityTable
        activityTable.html(html);
        // Add event by using delegate event.
        debugger
        AddActivityAbstractOnClickEvent();
        $('#current-data-table').append(activityTable);

        /* This call is necessary because the table is added dynamically */
        $('[data-toggle="tooltip"]').tooltip();
    });
}
作为一个简单的测试来确保我得到了正确的ID。但是这样做并不能得到我的ID,我也觉得我做的太复杂了

运行上面的代码时,我会在调试器中看到下面的值。但我无法访问它,这可能是因为我从一开始就做错了


我试图绕过我使用的这个选择方法,是将“数据id”添加到
元素中,然后访问它,但这并没有真正起作用……有什么想法吗?

数据id
不是一个元素,而是一个属性,因此需要使用属性值选择器并使用
.data()
获取基础属性值而不是其子项

var id = $(this).find('td[data-id]').data('id');
//Alternatively :first selector can be used
//var id = $(this).find('td:first').data('id');
而不是

var id = $(this).find('td').find('data-id').children();

如果您需要获得第一个td,您可以使用

 $('#activityTable').on('click', 'tr', function () {
        var id = $(this).find('td:first').data('id');
        GetActivityFullDescription(id);
    });

是的,这就成功了。谢谢但是,我没有使用
.data()
,而是使用了
html()
,因为我需要元素的内容:)谢谢您的解释。也很好。
 $('#activityTable').on('click', 'tr', function () {
        var id = $(this).find('td:first').data('id');
        GetActivityFullDescription(id);
    });