我有一个 HTML 表格,如下所示:
jQuery(document).ready(function($) {
$('#reservationtable tbody tr td').on('click', function () {
var reservationtime = $( this ).siblings('th').text();
var header = $(this).next('.theader-text-nonstrong').val();
$('#modalvon').text(reservationtime);
$('#modalbis').text(addMinutes(reservationtime, '60'));
$('#modaldatum').text(header);
$("#confirmreservierung").modal("show");
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table table-bordered table-sm res-table" id="reservationtable">
<thead>
<tr>
<th scope="col" class="theader-text td-border-right"><svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-calendar" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z"/></svg></th>
<th scope="col" class="theader-text td-border-right" colspan="3"><?php echo "<span class='theader-text-nonstrong'>" . date("l") . "</span><br>" . date("d.m.Y"); ?></th>
<th scope="col" class="theader-text td-border-right" colspan="3"><?php echo "<span class='theader-text-nonstrong'>" . date("l", strtotime("+1 day")). "</span><br>" . date("d.m.Y", strtotime("+1 day")); ?></th>
<th scope="col" class="theader-text td-border-right" colspan="3"><?php echo "<span class='theader-text-nonstrong'>" . date("l", strtotime("+2 day")). "</span><br>" . date("d.m.Y", strtotime("+2 day")); ?></th>
<th scope="col" class="theader-text td-border-right" colspan="3"><?php echo "<span class='theader-text-nonstrong'>" . date("l", strtotime("+3 day")). "</span><br>" . date("d.m.Y", strtotime("+3 day")); ?></th>
</tr>
</thead>
<tbody>
<tr>
<th scope="col" class="td-border-right">Zeit</th>
<th scope="col">Platz 1</th>
<th scope="col">Platz 2</th>
<th scope="col" class="td-border-right">Platz 3</th>
<th scope="col">Platz 1</th>
<th scope="col">Platz 2</th>
<th scope="col" class="td-border-right">Platz 3</th>
<th scope="col">Platz 1</th>
<th scope="col">Platz 2</th>
<th scope="col" class="td-border-right">Platz 3</th>
<th scope="col">Platz 1</th>
<th scope="col">Platz 2</th>
<th scope="col" class="td-border-right">Platz 3</th>
</tr>
<tr>
<th scope="row" class="td-border-right">08:00</th>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
</tr>
<tr>
<th scope="row" class="td-border-right">09:00</th>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
</tr>
<tr>
<th scope="row" class="td-border-right">10:00</th>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
</tr>
<tr>
<th scope="row" class="td-border-right">11:00</th>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
</tr>
<tr>
<th scope="row" class="td-border-right">12:00</th>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
</tr>
<tr>
<th scope="row" class="td-border-right">13:00</th>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
</tr>
<tr>
<th scope="row" class="td-border-right">14:00</th>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
</tr>
<tr>
<th scope="row" class="td-border-right">15:00</th>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
</tr>
<tr>
<th scope="row" class="td-border-right">16:00</th>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
</tr>
<tr>
<th scope="row" class="td-border-right">17:00</th>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
</tr>
<tr>
<th scope="row" class="td-border-right">18:00</th>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
</tr>
<tr>
<th scope="row" class="td-border-right">19:00</th>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
</tr>
<tr>
<th scope="row" class="td-border-right">20:00</th>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
</tr>
</tbody>
</table>
Also, I have a jquery method which handles the event when a user clicks on a td in the table:
正如您所看到的,我想在引导模式内加载数据。我想从单击的 td 的列标题中获取值。特别是我想通过“theater-text-nonstrong”类获得跨度的价值。当前的方法只能得到一个空值。
感谢您的帮助!
由于涉及 colspan,一种方法是为所有标题文本创建一个数组。
在页面加载时遍历所有<th colspan>
并获取 colspan 值并使用该值将文本推送到每个跨列的标题数组中。
然后当您单击<td>
使用该行单元格内的索引从标题数组中获取关联的标题文本
// add some cell text for demo
demoInit();
let spanHeadings = [];
$('thead th[colspan]').each(function() {
const colspan = +this.colSpan,
heading = $(this).find('.theader-text-nonstrong').text();
// create as many headings as colspan length
spanHeadings.push.apply(spanHeadings, Array(colspan).fill(heading));
});
$('#reservationtable tbody td').click(function() {
const tdIdx = $(this).index() - 1;// subtract for the left `<th>`
const heading = spanHeadings[tdIdx];
console.clear()
console.log('heading: ', heading)
});
function demoInit() {
$('td:empty').text(function(i) {
return 'Cell ' + (i + 1)
});
}
td {
border: 1px solid #ccc;
padding: 4px
}
table {
border-collapse: collapse
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table table-bordered table-sm res-table" id="reservationtable">
<thead>
<tr>
<th scope="col" class="theader-text td-border-right"><svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-calendar" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z"/></svg></th>
<th scope="col" class="theader-text td-border-right" colspan="3"><span class='theader-text-nonstrong'>Span 1</span></th>
<th scope="col" class="theader-text td-border-right" colspan="3"><span class='theader-text-nonstrong'>Span 2</span><br></th>
<th scope="col" class="theader-text td-border-right" colspan="3"><span class='theader-text-nonstrong'>Span 3</span><br></th>
<th scope="col" class="theader-text td-border-right" colspan="3"><span class='theader-text-nonstrong'>Span 4</span></th>
</tr>
</thead>
<tbody>
<tr>
<th scope="col" class="td-border-right">Zeit</th>
<th scope="col">Platz 1</th>
<th scope="col">Platz 2</th>
<th scope="col" class="td-border-right">Platz 3</th>
<th scope="col">Platz 1</th>
<th scope="col">Platz 2</th>
<th scope="col" class="td-border-right">Platz 3</th>
<th scope="col">Platz 1</th>
<th scope="col">Platz 2</th>
<th scope="col" class="td-border-right">Platz 3</th>
<th scope="col">Platz 1</th>
<th scope="col">Platz 2</th>
<th scope="col" class="td-border-right">Platz 3</th>
</tr>
<tr>
<th scope="row" class="td-border-right">08:00</th>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
</tr>
<tr>
<th scope="row" class="td-border-right">09:00</th>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
<td></td>
<td></td>
<td class="td-border-right"></td>
</tr>
</tbody>
</table>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)