此代码的目的是,如果<td>
中包含的<tr>
位于被点击的<tr>
之下,则进行ajax调用,但仅限于隐藏{{1} }} 是空的。最终我打算拿这些数据并用它做点什么,但是现在,我只需要把这个模仿手风琴的东西作为一个表工作。由于这个表是在我有其他<tr>
元素的同一个html文件上创建的,所以我必须创建自定义类来隐藏这些特定的元素。课程.hidden
使其可见,而课程detail-view
包含hidden-detail
。我知道postDetails可以找到合适的数据。我更担心的是找出为什么FireFox的开发工具在此代码中将display:none
和statusRow
标记为detPane
,而(unavailable)
实际上似乎包含行statusRow.closest('tr').next('tr')
,如预期的那样。 jQuery或选择器有问题吗?这里发生了什么?
detPane
答案 0 :(得分:0)
问题在于,正如epascarello指出的那样,text
不是有效的财产。 Ergo,找不到任何东西。但是,我还需要分别抓住细节 - 即。无法从其他东西访问东西,只是遍布整个地方的菊花链选择器。所以,这是最终结果。
function makeOrderTable(response, username, sesstoken) {
$(jQuery.parseJSON(JSON.stringify(response))).each(function() {
var foNum = this['Factory Order#'];
var pO = this['PO#'];
var status = this['Status'];
var shipDate = this['Ship Date'];
$('.orders tbody').append(
'<tr class="status-row">'+
'<td>' + foNum + '</td><td>' + pO + '</td><td>' + status + '</td><td>' + shipDate + '</td>'+
'</tr>'+
'<tr class="detail-row hidden-detail">'+
'<td colspan="4"></td>'+
'</tr>'
);
});
$(document).ready(function() {
$('table').on('click', 'tr.status-row', function() {
var statusRow = $(this);
var detRow = statusRow.closest('tr').next('tr');
var details = this.nextElementSibling.querySelector('td');
$('.detail-view').addClass('hidden-detail');
$('.detail-view').removeClass('detail-view');
detRow.addClass('detail-view');
detRow.removeClass('hidden-detail');
if (details.innerText == '')
{
var value = statusRow.find('td:first-child').text();
postDetails(value, username, sesstoken, details);
}
});
});
}
答案 1 :(得分:-1)
如果我正确理解了这个问题,我认为“隐藏”tr的选择器不正确。
您已将点击事件附加到tr
,因此您不必执行.closest('tr')
。只需var detPane = $(statusRow[0]).next('tr');
,就可以在点击的tr
之后找到下一个JpaRepository#deleteInBatch(Iterable<T> batch)
。