javascript - 如何同时为多个元素应用悬停事件?

标签 javascript jquery html

我是 JavaScript 的新手,希望为每一行分组表格数据。每行有 6 个表数据。我希望前 3 个链接在一起,后 3 个分开。为我想要链接在一起的列创建一个 className 会使所有表悬停。我只希望特定的行值可以悬停。

var table = document.getElementsByTagName("tbody");

for (var i = 0; i < table.length-1; i++){

    var currentTable = table[i];
    var rows = currentTable.getElementsByTagName("tr");

    for(var j = 3; j < rows.length-1; j++){

        var c = rows[j].cells;

        c[0].className = "fall";
        c[1].className = "fall";
        c[2].className = "fall";
        // for each row make these three selectable

        c[3].className = "spring";
        c[4].className = "spring";
        c[5].className = "spring";
    }
}

除了为每一行创建一个新的类名之外,我不确定是否有更好的方法来做到这一点。如果我需要这样做,有没有一种简单的方法可以动态地做到这一点?如果您想查看实际表格,请告诉我。谢谢。

最佳答案

当然,您可以使用 CSS 根据索引对它们进行分类:

td:nth-child(1), td:nth-child(2), td:nth-child(3) {
  color: red;
}

td:nth-child(4), td:nth-child(5), td:nth-child(6) {
  color: green;
}
<table>
  <tbody>
    <tr>
      <td>Cell 1</td>
      <td>Cell 2</td>
      <td>Cell 3</td>
      <td>Cell 4</td>
      <td>Cell 5</td>
      <td>Cell 6</td>
    </tr>
    <tr>
      <td>Cell 7</td>
      <td>Cell 8</td>
      <td>Cell 9</td>
      <td>Cell 10</td>
      <td>Cell 11</td>
      <td>Cell 12</td>
    </tr>
  </tbody>
</table>

引用::nth-child()


更新:

$('td:nth-child(1),td:nth-child(2),td:nth-child(3)').on('mouseover', function () {
  var index = $(this).index() + 1;
  
  $('table td:nth-child(' + index + ')').css('color', 'red');
});

$('td:nth-child(1),td:nth-child(2),td:nth-child(3)').on('mouseout', function () {
  var index = $(this).index() + 1;
  
    $('table td:nth-child(' + index + ')').css('color', 'black');
});

$('td:nth-child(4),td:nth-child(5),td:nth-child(6)').on('mouseover', function () {
  var index = $(this).index() + 1;
  
  $('table td:nth-child(' + index + ')').css('color', 'green');
});

$('td:nth-child(4),td:nth-child(5),td:nth-child(6)').on('mouseout', function () {
  var index = $(this).index() + 1;
  
    $('table td:nth-child(' + index + ')').css('color', 'black');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<h3>Table 1</h3>

<table>
  <tbody>
    <tr>
      <td>Cell 1</td>
      <td>Cell 2</td>
      <td>Cell 3</td>
      <td>Cell 4</td>
      <td>Cell 5</td>
      <td>Cell 6</td>
    </tr>
  </tbody>
</table>

<h3>Table 2</h3>

<table>
  <tbody>
    <tr>
      <td>Cell 7</td>
      <td>Cell 8</td>
      <td>Cell 9</td>
      <td>Cell 10</td>
      <td>Cell 11</td>
      <td>Cell 12</td>
    </tr>
  </tbody>
</table>


更新 2:

$('td:nth-child(1),td:nth-child(2),td:nth-child(3)').on('mouseover', function () {

  $('td:nth-child(1),td:nth-child(2),td:nth-child(3)').css('color', 'red');
  
});

$('td:nth-child(1),td:nth-child(2),td:nth-child(3)').on('mouseout', function () {

  $('td:nth-child(1),td:nth-child(2),td:nth-child(3)').css('color', 'black');
  
});

$('td:nth-child(4),td:nth-child(5),td:nth-child(6)').on('mouseover', function () {

    $('td:nth-child(4),td:nth-child(5),td:nth-child(6)').css('color', 'green');
    
});

$('td:nth-child(4),td:nth-child(5),td:nth-child(6)').on('mouseout', function () {

    $('td:nth-child(4),td:nth-child(5),td:nth-child(6)').css('color', 'black');


});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<h3>Table 1</h3>

<table>
  <tbody>
    <tr>
      <td>Cell 1</td>
      <td>Cell 2</td>
      <td>Cell 3</td>
      <td>Cell 4</td>
      <td>Cell 5</td>
      <td>Cell 6</td>
    </tr>
  </tbody>
</table>

<h3>Table 2</h3>

<table>
  <tbody>
    <tr>
      <td>Cell 7</td>
      <td>Cell 8</td>
      <td>Cell 9</td>
      <td>Cell 10</td>
      <td>Cell 11</td>
      <td>Cell 12</td>
    </tr>
  </tbody>
</table>

或者,如果您只想在 1 行上使用该事件,您可以将事件编辑为:

$('td:nth-child(1),td:nth-child(2),td:nth-child(3)').on('mouseover', function () {

  $(this).parent().find('td:nth-child(1),td:nth-child(2),td:nth-child(3)').css('color', 'red');

});

更新 3:

$('td').on('mouseover', function () {
  var tr = $(this).parent();
  
  var index = $(this).index();
  
  var cells = index < 3 ? [1, 2, 3] : [4, 5, 6];
  
  var color = index < 3 ? 'red' : 'green';
  
  cells.forEach(function (x) {
    tr.find('td:nth-child(' + x + ')').css('color', color);
  });
});

$('td').on('mouseout', function () {
  $(this).parent().find('td').css('color', 'black');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<h3>Table 1</h3>

<table>
  <thead>
    <tr>
      <th>H1</th>
      <th>H2</th>
      <th>H3</th>
      <th>H4</th>
      <th>H5</th>
      <th>H6</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Cell 1</td>
      <td>Cell 2</td>
      <td>Cell 3</td>
      <td>Cell 4</td>
      <td>Cell 5</td>
      <td>Cell 6</td>
    </tr>
  </tbody>
</table>

<h3>Table 2</h3>

<table>
  <thead>
    <tr>
      <th>H1</th>
      <th>H2</th>
      <th>H3</th>
      <th>H4</th>
      <th>H5</th>
      <th>H6</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Cell 7</td>
      <td>Cell 8</td>
      <td>Cell 9</td>
      <td>Cell 10</td>
      <td>Cell 11</td>
      <td>Cell 12</td>
    </tr>
  </tbody>
</table>

关于javascript - 如何同时为多个元素应用悬停事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59280396/

相关文章:

javascript - 根据<select>动态更改<label>的文本

javascript - 操作 RGBA Javascript

javascript - 计数输入值

javascript - javascript中的标题大小写和缩写

php - 将参数从 jquery 传递到 php

javascript - 在翻转 tile 后捕获点击事件

javascript - 找不到模块 : Error: Can't resolve 'dns' when using MongoDB

php - 如何将数组传递给 PHP 服务器的数组?

java - 在 Java/Spring 中将 HTML 作为附件发送

html - 图像叠加在响应大小的图像 Bootstrap 上