Jquery选择错误的表的colgroup

时间:2012-07-11 23:38:45

标签: jquery html html-table colgroup

我有以下两张表。我希望使用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列突出显示。第六列使第二列突出显示。

为什么一切都是这样的?

1 个答案:

答案 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");
          }
      });