JQuery 从动态 table 的 :nth 选择器中获取文本
JQuery get text from :nth selector from dynamic table
我遇到了一个我无法解决的问题并找到了一些帮助,但不是我需要的帮助。
我需要从单击的行访问 data[i].no
变量。我只是无法在底部获取我的代码来显示它。
这是从 JSON 查询创建动态 table 的代码:
html = '<table class="tbl small">'
$time = 0
for (var i = 0; i< len; i++) {
$time = (parseInt($time)+parseInt(data[i].time));
if (data[i].status == "MISSING") {
$('#tottime').html('');
} else {
$('#tottime').html('Total time outstanding for ' + monthNames[d.getMonth()] + ' : ' + $time);
}
if (data[i].overdue == "Yes") {
html = html + '<tr style="background: #FF0000">'
} else if (data[i].status == "RE ASSES") {
html = html + '<tr style="background: #D0C0C0">'
} else if (data[i].status == "REPAIR") {
html = html + '<tr style="font-style: italic">'
} else{
html = html + '<tr>'
}
html = html + '<td class="border col1">'+data[i].line+'</td>'
html = html + '<td class="border col2">'+data[i].no+'</td>'
html = html + '<td class="border col3">'+data[i].desc+'</td>'
html = html + '<td class="border col4">'+data[i].loc+'</td>'
html = html + '<td class="border col5">'+data[i].time+'</td>'
html = html + '<td class="border col6">'+data[i].lastcal+'</td>'
html = html + '<td class="border col7">'+data[i].frequency+'</td>'
html = html + '<td class="border col8">'+data[i].status+'</td>'
if (data[i].external == "E" ) {
html = html + '<td class="border col9">✔</td>'
} else {
html = html + '<td class="border col9"></td>'
}
html = html + '</tr>'
}
html = html + '</table>'
$('#output').html(html);
下面是创建对话框以显示确认页面的代码:
$('#output').on('click','td',function() {
html = $(':nth-child(2)',this).text()
$('#msgBox').html(html);
$('#msgBox').dialog('option','title','Calibration Complete')
$('#msgBox').dialog('open')
})
在点击事件中this
是被点击的td
而你想搜索第二个td
,你应该将"up"移动到tr
第一.
$('#output').on('click','td',function() {
// $(this) is the clicked td
// .closest("tr") returns the first tr parent ( in this case the same as .parent() )
// .find(':nth-child(2)') gives you the second child of the tr
var html = $(this).closest('tr').find(':nth-child(2)').text()
$('#msgBox').html(html);
$('#msgBox').dialog('option','title','Calibration Complete')
$('#msgBox').dialog('open')
})
另外(在一个完全不同的领域),尝试给你的 a 变量一个范围而不是使用全局变量。这可以为您省去很多麻烦,您只需在第一次使用前添加 var
(如上)。
我遇到了一个我无法解决的问题并找到了一些帮助,但不是我需要的帮助。
我需要从单击的行访问 data[i].no
变量。我只是无法在底部获取我的代码来显示它。
这是从 JSON 查询创建动态 table 的代码:
html = '<table class="tbl small">'
$time = 0
for (var i = 0; i< len; i++) {
$time = (parseInt($time)+parseInt(data[i].time));
if (data[i].status == "MISSING") {
$('#tottime').html('');
} else {
$('#tottime').html('Total time outstanding for ' + monthNames[d.getMonth()] + ' : ' + $time);
}
if (data[i].overdue == "Yes") {
html = html + '<tr style="background: #FF0000">'
} else if (data[i].status == "RE ASSES") {
html = html + '<tr style="background: #D0C0C0">'
} else if (data[i].status == "REPAIR") {
html = html + '<tr style="font-style: italic">'
} else{
html = html + '<tr>'
}
html = html + '<td class="border col1">'+data[i].line+'</td>'
html = html + '<td class="border col2">'+data[i].no+'</td>'
html = html + '<td class="border col3">'+data[i].desc+'</td>'
html = html + '<td class="border col4">'+data[i].loc+'</td>'
html = html + '<td class="border col5">'+data[i].time+'</td>'
html = html + '<td class="border col6">'+data[i].lastcal+'</td>'
html = html + '<td class="border col7">'+data[i].frequency+'</td>'
html = html + '<td class="border col8">'+data[i].status+'</td>'
if (data[i].external == "E" ) {
html = html + '<td class="border col9">✔</td>'
} else {
html = html + '<td class="border col9"></td>'
}
html = html + '</tr>'
}
html = html + '</table>'
$('#output').html(html);
下面是创建对话框以显示确认页面的代码:
$('#output').on('click','td',function() {
html = $(':nth-child(2)',this).text()
$('#msgBox').html(html);
$('#msgBox').dialog('option','title','Calibration Complete')
$('#msgBox').dialog('open')
})
在点击事件中this
是被点击的td
而你想搜索第二个td
,你应该将"up"移动到tr
第一.
$('#output').on('click','td',function() {
// $(this) is the clicked td
// .closest("tr") returns the first tr parent ( in this case the same as .parent() )
// .find(':nth-child(2)') gives you the second child of the tr
var html = $(this).closest('tr').find(':nth-child(2)').text()
$('#msgBox').html(html);
$('#msgBox').dialog('option','title','Calibration Complete')
$('#msgBox').dialog('open')
})
另外(在一个完全不同的领域),尝试给你的 a 变量一个范围而不是使用全局变量。这可以为您省去很多麻烦,您只需在第一次使用前添加 var
(如上)。