Я использую шаблоны JQuery для рендеринга ряда таблиц из источника данных JSON.
После рендеринга таблиц я присоединяю обработчик событий "hover" Jquery (с помощью класса CSS таблицы), чтобы выделитьстолбцы таблицы.
Событие наведения работает, но влияет на все отображаемые таблицы одного и того же класса CSS - поэтому, если я наведу курсор на столбец 2 таблицы 1, столбец 2 ВСЕХ моих таблиц также будет выделен.
Я бы предпочел не прикреплять индивидуальный идентификатор для каждой таблицы - больше ничего не понадобилось бы.
Я сделал несколько поисков в Google, и использование JQuery "closest ()" в обработчике событий при наведении курсора кажется многообещающим, но я не могу понять правильное использование :(
Любая помощь будет очень ценится.
$(document).ready(function() {
drawRows();
setColumnHover();
});
function drawRows() {
var jsonData = jQuery.parseJSON(getJsonString());
$("#tableTemplate").tmpl(jsonData).appendTo("#funnelBody");
}
function setColumnHover() {
/* Ref: http://www.local-guru.net/blog/2010/10/29/table-column-highlighting-with-jquery */
$(".statsTable td").hover(
function() {
var idx = $(this).parent().children('td,th').index($(this)) + 1;
if (idx > 1) {
$('td:nth-child(' + idx + ')').addClass('hover');
$('th:nth-child(' + idx + ')').addClass('hover');
}
}
,
function() {
var idx = $(this).parent().children('td,th').index($(this)) + 1;
if (idx > 1) {
$('td:nth-child(' + idx + ')').removeClass('hover');
$('th:nth-child(' + idx + ')').removeClass('hover');
}
}
);
}
///////////// Rendered HTML
<table class="statsTable">
<tr>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>...</td>
<td>...</td>
</tr>
</table>