所以,我這種情況現在:跳過使用jQuery TR選擇上的keydown
https://jsfiddle.net/rucjr5cm/
$(function() {
var row = $('.DataList tbody tr.highlight');
var index = row.index();
console.log('current row: ' + index);
function highlight(tableIndex) {
$('.DataList tbody tr').removeClass('highlight');
$('.DataList tbody tr:eq(' + tableIndex + ')').addClass('highlight');
}
$(document).keydown(function(e) {
var currentRow = $('.DataList tbody tr.highlight');
switch (e.which) {
case 38:
var prevRow = currentRow.closest('.DataList tbody tr:not(.Header, .SubHeader, .Total)').prev('tr');
highlight(prevRow.index());
break;
case 40:
var nextRow = currentRow.closest('.DataList tbody tr:not(.Header, .SubHeader, .Total)').next('tr');
highlight(nextRow.index());
break;
}
});
});
.highlight {
background-color: yellow !important;
}
.Header,
.SubHeader,
.Total {
background-color: grey;
}
<script src="https://code.jquery.com/jquery-3.1.1.js" integrity="sha256-16cdPddA6VdVInumRGo6IbivbERE8p7CQR3HzTBuELA=" crossorigin="anonymous"></script>
<table id="data" class="DataList" border="1" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<th>#</th>
<th>header2</th>
<th>header3</th>
<th>header4</th>
<th>header5</th>
</tr>
<tr>
<td>1</td>
<td>data</td>
<td>data</td>
<td>data</td>
<td>data</td>
</tr>
<tr class="Header">
<td>2</td>
<td>data</td>
<td>data</td>
<td>data</td>
<td>data</td>
</tr>
<tr class="SubHeader">
<td>3</td>
<td>data</td>
<td>data</td>
<td>data</td>
<td>data</td>
</tr>
<tr class="highlight">
<td>4</td>
<td>data</td>
<td>data</td>
<td>data</td>
<td>data</td>
</tr>
<tr>
<td>5</td>
<td>data</td>
<td>data</td>
<td>data</td>
<td>data</td>
</tr>
<tr class="Total">
<td>6</td>
<td>data</td>
<td>data</td>
<td>data</td>
<td>data</td>
</tr>
</tbody>
</table>
我想突出顯示的行跳過灰色的人(它們由類定義並且不能被修改)。如果達到最後一個不變灰色的那個,那麼也會很好,去第一個(再次,不變灰)。
我試過使用jQuery的最接近的+ next和prev方法,但也沒有得到它。
我從來沒有使用最接近和next/prev的方法,我當然做錯了,有人可以提供任何幫助嗎?
非常感謝!
你函數'亮點(tableIndex)'總是會被傳遞值-1即調用'亮點(-1)'。 –