我有以下两张表。我希望使用jquery将每个colgroups用于鼠标悬停。
<div id="one">
<table border=1>
<colgroup><colgroup><colgroup><colgroup>
<thead>
<tr>
<th>A</th>
<th>B</td>
<th>C</th>
<th>D</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
</tbody>
</table>
</div>
<div id="two">
<table border=1>
<colgroup><colgroup><colgroup><colgroup><colgroup><colgroup>
<thead>
<tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
<th>E</th>
<th>F</th>
</tr>
</thead>
<tbdoy>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
</tbody>
</table>
</div>
这是Jquery:
$("table").delegate('td, th','mouseover mouseleave', function(e) {
if (e.type == 'mouseover') {
$("colgroup").eq($(this).index()).addClass("hover");
}
else {
$("colgroup").eq($(this).index()).removeClass("hover");
}
});
jquery适用于第一个表,但是当我转到第二个表的第一个列时,FIRST表中的FIRST列突出显示。表2的第1-4列都突出显示了表1的第1-4列。当我在第二个表中执行FIFTH列时,SECOND表中的FIRST列突出显示。第六列使第二列突出显示。
为什么一切都是这样的?
答案 0 :(得分:2)
我认为下面的代码会解决你的问题,但这是一个漫长的一天,所以它可能不是很完美:)主要的是你需要将你的colgroup集合减少到只有当前被moused的表。 / p>
$("table").delegate('td, th','mouseover mouseleave', function(e) {
var $table = $(this).closest("table");
if (e.type == 'mouseover') {
$table.children("colgroup").eq($(this).index()).addClass("hover");
}
else {
$table.children("colgroup").eq($(this).index()).removeClass("hover");
}
});