平滑滚动到可滚动表格内的一行

时间:2013-12-31 06:25:11

标签: jquery

我正在尝试实施产品目录。所有产品都将列在已启用溢出的表中。我需要一种方法来实现平滑滚动到可滚动表中的特定行。这是小提琴http://jsfiddle.net/PHTsd/

此处只有一个约束 - 页面不应滚动:只有表格应滚动

我尝试了一些方法,例如: Chris Coyer的Smooth scroll

$(function() {   $('a[href*=#]:not([href=#])').click(function() {
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
      var target = $(this.hash);
      target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
      if (target.length) {
        $('html,body').animate({
          scrollTop: target.offset().top
        }, 1000);
        return false;
      }
    }   }); });

$('html,body')替换为$('table'),但无济于事。

我错过了什么吗?是否有插件已经实现了这个?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

可悲的是,你已经添加了溢出:auto和你的tbody标签的高度。尝试在其上使用scrollTop()而不是表。我会说做以下其中一项:

如果你想滚动tbody,然后定位而不是表本身 - 换句话说,上面你说你用$(“table”)替换了$(“html,body”);你用以下代替它:

$("tbody");

如果您不打算使用表头标记然后定位表本身而不是正文,但是您需要调整CSS以将overflow:auto属性设置为表而不是tbody < / em>的

在控制台中试试这个,你会发现它运行良好:

$("tbody").scrollTop(50);

你可以用任何东西替换50来看它有效果。你可能仍然需要摆弄它,但这应该让你朝着正确的方向前进。

如果您需要更多说明,请告诉我,我会帮助您。

还有一件事 - 为您的表提供ID或类,并定位:

<table id="someTable">
    <tbody>.....</tbody>
</table>

$("#someTable tbody").scrollTop(50);

这是一种更安全的做事方式!