У меня есть таблица, где верхняя граница первого, второго и третьего тд в первом тр должна изменить цвет при наведении соответствующего тд.
Мое ограничение заключается в том, что я больше не могу использовать классы или идентификаторы, потому что эти стили таблиц будут использоваться людьми, которые практически не имеют опыта написания кода, они просто выбирают таблицу в нашей cms и добавляют один класс и идентификатор к ней .
У меня работает код (см. Нижний фрагмент), но я хочу закодировать его максимально эффективно для следующего дочернего объекта.
Я мог бы сделать это:
$("#table1 td:nth-child(1)").hover(function() {
$("#table1.table-equal-compare-3 tr:nth-child(1) td:nth-child(1)").addClass("table-compare-border-hover");
}, function() {
$("#table1.table-equal-compare-3 tr:nth-child(1) td:nth-child(1)").removeClass("table-compare-border-hover");
});
$("#table1 td:nth-child(2)").hover(function() {
$("#table1.table-equal-compare-3 tr:nth-child(1) td:nth-child(2)").addClass("table-compare-border-hover");
}, function() {
$("#table1.table-equal-compare-3 tr:nth-child(1) td:nth-child(2)").removeClass("table-compare-border-hover");
});
$("#table1 td:nth-child(3)").hover(function() {
$("#table1.table-equal-compare-3 tr:nth-child(1) td:nth-child(3)").addClass("table-compare-border-hover");
}, function() {
$("#table1.table-equal-compare-3 tr:nth-child(1) td:nth-child(3)").removeClass("table-compare-border-hover");
});
Но это кажется ужасно неэффективным, особенно если на странице может быть до 4 таблиц, тогда мне нужно будет повторить приведенный выше код для # table1, # table2, # table3 и # table4
Ниже мой полный код
$("#table1 td:nth-child(1)").hover(function() {
$("#table1.table-equal-compare-3 tr:nth-child(1) td:nth-child(1)").addClass("table-compare-border-hover");
}, function() {
$("#table1.table-equal-compare-3 tr:nth-child(1) td:nth-child(1)").removeClass("table-compare-border-hover");
});
.table-equal-compare-3 tr:nth-child(1) {
border-top: solid 2px #e6e6e6;
}
table.table-equal-compare-3 td {
text-align: center;
padding: 8px;
vertical-align: bottom;
padding-top: 10px;
}
.table-compare-border-hover {
border-top: solid 2px #000;
-webkit-transition: border-top-color 500ms linear;
-ms-transition: border-top-color 500ms linear;
transition: border-top-color 500ms linear;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table border="0" class="table-equal-compare-3" id="table1">
<tbody>
<tr>
<td style="text-align: center;"><strong>Axitour AXIWI REF-001</strong></td>
<td style="text-align: center;"><strong>Axitour AXIWI REF-002</strong></td>
<td style="text-align: center;"><strong>Axitour AXIWI REF-004</strong></td>
</tr>
<tr>
<td width="240">
<div>2 Zenders (AXIWI AT-320 LD)</div>
<div>2 Sportheadsets</div>
<div>Transportkoffer</div>
</td>
<td width="240">
<div>3 Zenders (AXIWI AT-320 LD)</div>
<div>3 Sportheadsets</div>
<div>• Transportkoffer</div>
</td>
<td width="240">
<div>5 Zenders (AXIWI AT-320 LD)</div>
<div>5 Sportheadsets</div>
<div>Transportkoffer</div>
</td>
</tr>
</tbody>
</table>