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