【问题标题】:Highlight 2 rows by class or ID in separate tables在单独的表格中按类别或 ID 突出显示 2 行
【发布时间】:2016-11-06 07:03:07
【问题描述】:

我正在 PHP 中动态创建两个表,我希望能够轻松地比较两个表中的行。我希望能够悬停突出显示任一表格中的一行,以及另一个表格突出显示中的相应行(按 id)。

我在这里找到了许多对类似情况的引用,但它们似乎都可以通过将鼠标悬停在第 1 行上来突出显示表 2 中的第 1 行。我希望突出显示按行 ID(或类,不确定哪个更合适)。

在下面的示例中,如果我将鼠标悬停在表 1 中的第 123 行,表 2 中的第 123 行也会突出显示。反之,突出显示表 2 中的第 123 行会突出显示表 1 中的第 123 行。

这里的诀窍是这些行可以按任何顺序排列,所以在这里计算或做第 n 个事情是行不通的。

<table id="t1">
    <tr id="123"><td>......</td></tr>
    <tr id="456"><td>......</td></tr>
    <tr id="789"><td>......</td></tr>
    <tr id="0AB"><td>......</td></tr>
    <tr id="CDE"><td>......</td></tr>
</table>
<p>Table 2</p>
<table id="t2">
    <tr id="CDE"><td>......</td></tr>
    <tr id="123"><td>......</td></tr>
    <tr id="0AB"><td>......</td></tr>
    <tr id="456"><td>......</td></tr>
    <tr id="789"><td>......</td></tr>
</table>

我对 Javascript 和 jQuery 很感兴趣。只是在这一点上完全失去了。在这一点上,我无法尝试将其他解决方案一起破解。

【问题讨论】:

    标签: javascript jquery css rows highlight


    【解决方案1】:

    Id 不能在单个 HTML 文档中重复。因此修改您的 HTML 以使用 class 而不是 id。然后你可以参考下面的代码来了解你的逻辑:

    $(document).ready(function() {
      $("table tr").hover(function() {
          $("tr").removeClass("highlight");
          $("." + $(this).attr("class")).addClass("highlight");
        },
        function() {
    
          $("." + ($(this).attr("class").split(' '))[0]).removeClass("highlight");
        });
    });
    .highlight {
      background: gray;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <table id="t1">
      <tr class="123">
        <td>......</td>
      </tr>
      <tr class="456">
        <td>......</td>
      </tr>
      <tr class="789">
        <td>......</td>
      </tr>
      <tr class="0AB">
        <td>......</td>
      </tr>
      <tr class="CDE">
        <td>......</td>
      </tr>
    </table>
    <p>Table 2</p>
    <table id="t2">
      <tr class="CDE">
        <td>......</td>
      </tr>
      <tr class="123">
        <td>......</td>
      </tr>
      <tr class="0AB">
        <td>......</td>
      </tr>
      <tr class="456">
        <td>......</td>
      </tr>
      <tr class="789">
        <td>......</td>
      </tr>
    </table>

    【讨论】:

      【解决方案2】:

      对于初学者来说,ID 应该是唯一的 - 所以你在匹配这些方面很不走运。将它们替换为类或数据属性,例如

      <table>
          <tr data-set="123"><td>...</td></tr>
          <tr data-set="abc"><td>...</td></tr>
          <tr data-set="xyz"><td>...</td></tr>
          <tr data-set="987"><td>...</td></tr>
      </table>
      
      <table>
          <tr data-set="123"><td>...</td></tr>
          <tr data-set="abc"><td>...</td></tr>
          <tr data-set="xyz"><td>...</td></tr>
          <tr data-set="987"><td>...</td></tr>
      </table>
      

      然后像这样,你基本上得到了你悬停的元素的数据属性,并搜索具有相同数据属性的其他元素。

      https://jsfiddle.net/yqm0z5up/1/

      请原谅代码的草率,但应该足以让您找到正确的地方。

      【讨论】:

      • 谢谢。这很有效,很容易分开和遵循。我很感激。
      猜你喜欢
      • 2017-09-21
      • 2020-08-27
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      • 1970-01-01
      • 2019-02-21
      • 2015-12-13
      • 2011-05-03
      相关资源
      最近更新 更多