使用Javascript,如何显示<;tr>;在另一个之上<;tr>;悬停时,隐藏第二个<;tr>;?

使用Javascript,如何显示<;tr>;在另一个之上<;tr>;悬停时,隐藏第二个<;tr>;?,javascript,jquery,html,css,twitter-bootstrap,Javascript,Jquery,Html,Css,Twitter Bootstrap,JSFiddle: 我正在使用jQuery和Bootstrap。我有一个包含如下4个元素的表: <table class="table table-bordered"> <thead> <tr> <th>First Name</th> <th>Last Name</th> </tr> </thead> <tbody>

JSFiddle:

我正在使用jQuery和Bootstrap。我有一个包含如下4个
元素的表:

<table class="table table-bordered">
  <thead>
    <tr>
      <th>First Name</th>
      <th>Last Name</th>
    </tr>
  </thead>

  <tbody>
    <tr class="hover-data">
      <td>Mark</td>
      <td>Otto</td>
    </tr>

      <tr class="hover-link hide">
          <td colspan="2"><a href="#">Some link1</a></td>
      </tr>

    <tr class="hover-data">
      <td>Larry</td>
      <td>the Bird</td>
    </tr>

      <tr class="hover-link hide">
          <td colspan="2"><a href="#">Some link2</a></td>
      </tr>
  </tbody>
</table>
首先,我用class
table hover
隐藏这两行,方法是给它们一个
hide
类,我只显示那些带有class
表数据的行

我想要实现的是:当我用class
table data
悬停
tr
时,我想用class
table hover
显示下一个和立即的
tr
,隐藏“悬停的tr”

当我再次将鼠标移到外部时,我希望所有内容都能恢复,并且只看到带有类
悬停数据的
tr

不知道为什么我的代码不能工作。有什么想法吗?

像这样:

$('table tbody tr').hover(function() {
    if($(this).hasClass('hover-data')){
        $(this).next().toggleClass('hidden');
    }
});
像这样:

$('table tbody tr').hover(function() {
    if($(this).hasClass('hover-data')){
        $(this).next().toggleClass('hidden');
    }
});
像这样:

$('table tbody tr').hover(function() {
    if($(this).hasClass('hover-data')){
        $(this).next().toggleClass('hidden');
    }
});
像这样:

$('table tbody tr').hover(function() {
    if($(this).hasClass('hover-data')){
        $(this).next().toggleClass('hidden');
    }
});

此选项在原始行上使用
mouseenter
,在新行上使用
mouseleave

$('table tbody').on('mouseenter', 'tr.hover-data', function () {
    $(this).next().show();
    $(this).hide();
}).on('mouseleave', 'tr.hover-link', function () {
    $(this).prev().show();).hide();
});
JSFiddle:

我注意到bootstrap
hide
类有点太“强”,覆盖了
show()
,所以我现在也将它们改为
style=“display:none”
。在以下示例中,请改用自己的类,例如
hideme


我使用委托事件(出于习惯,因此它们可以共享一个公共选择器),但两个单独的“普通”(静态)选择器也可能工作得很好。e、 g.

此选项在原始行上使用
mouseenter
,在新行上使用
mouseleave

$('table tbody').on('mouseenter', 'tr.hover-data', function () {
    $(this).next().show();
    $(this).hide();
}).on('mouseleave', 'tr.hover-link', function () {
    $(this).prev().show();).hide();
});
JSFiddle:

我注意到bootstrap
hide
类有点太“强”,覆盖了
show()
,所以我现在也将它们改为
style=“display:none”
。在以下示例中,请改用自己的类,例如
hideme


我使用委托事件(出于习惯,因此它们可以共享一个公共选择器),但两个单独的“普通”(静态)选择器也可能工作得很好。e、 g.

此选项在原始行上使用
mouseenter
,在新行上使用
mouseleave

$('table tbody').on('mouseenter', 'tr.hover-data', function () {
    $(this).next().show();
    $(this).hide();
}).on('mouseleave', 'tr.hover-link', function () {
    $(this).prev().show();).hide();
});
JSFiddle:

我注意到bootstrap
hide
类有点太“强”,覆盖了
show()
,所以我现在也将它们改为
style=“display:none”
。在以下示例中,请改用自己的类,例如
hideme


我使用委托事件(出于习惯,因此它们可以共享一个公共选择器),但两个单独的“普通”(静态)选择器也可能工作得很好。e、 g.

此选项在原始行上使用
mouseenter
,在新行上使用
mouseleave

$('table tbody').on('mouseenter', 'tr.hover-data', function () {
    $(this).next().show();
    $(this).hide();
}).on('mouseleave', 'tr.hover-link', function () {
    $(this).prev().show();).hide();
});
JSFiddle:

我注意到bootstrap
hide
类有点太“强”,覆盖了
show()
,所以我现在也将它们改为
style=“display:none”
。在以下示例中,请改用自己的类,例如
hideme



我使用委托事件(出于习惯,因此它们可以共享一个公共选择器),但两个单独的“普通”(静态)选择器也可能工作得很好。e、 g.

隐藏悬停的元素可能会阻止取消悬停事件的发生。你能解释一下(从最终用户的角度)总体目标是什么吗?因为我发现这个破碎的例子令人困惑。是的,用户故事是这样的:我有一个名字列表。当我将鼠标悬停在某个特定的人身上时,我希望看到我可以执行的操作列表,例如“编辑用户”、“删除用户”等。我希望这个新的操作列表与用户发生相同的位置。有点像覆盖层,但在顶部。我清除了吗?可能是您可以删除
并在上面显示编辑/删除
。隐藏将使hover无效。我希望您知道,在您的JSFIDLE示例中,引导有一个重要的显示:无隐藏,因此您将无法使用jquery.show()显示它;这些信息可能会对你有所帮助。@不,我不知道。谢谢。隐藏悬停的元素可能会阻止取消悬停事件的发生。你能解释一下(从最终用户的角度)总体目标是什么吗?因为我发现这个破碎的例子令人困惑。是的,用户故事是这样的:我有一个名字列表。当我将鼠标悬停在某个特定的人身上时,我希望看到我可以执行的操作列表,例如“编辑用户”、“删除用户”等。我希望这个新的操作列表与用户发生相同的位置。有点像覆盖层,但在顶部。我清除了吗?可能是您可以删除
并在上面显示编辑/删除
。隐藏将使hover无效。我希望您知道,在您的JSFIDLE示例中,引导有一个重要的显示:无隐藏,因此您将无法使用jquery.show()显示它;这些信息可能会对你有所帮助。@不,我不知道。谢谢。隐藏悬停的元素可能会阻止取消悬停事件的发生。你能解释一下(从最终用户的角度)总体目标是什么吗?因为我发现这个破碎的例子令人困惑。是的,用户故事是这样的:我有一个名字列表。当我将鼠标悬停在某个特定的人身上时,我希望看到我可以执行的操作列表,例如“编辑用户”、“删除用户”等。我希望这个新的操作列表与用户发生相同的位置。有点像覆盖层,但在顶部。我清除了吗?可能是您可以删除
并在上面显示编辑/删除
。隐藏将使hover无效。我希望您知道,在您的JSFIDLE示例中,引导有一个重要的显示:无隐藏,因此您将无法使用jquery.show()显示它;这些信息可能会对你有所帮助。@不,我不知道。谢谢。隐藏悬停的元素可能会阻止取消悬停事件的发生