具有非默认行高的Handsontable滚动问题

时间:2014-07-16 20:33:41

标签: javascript jquery scroll handsontable

我遇到了一个问题:当行高不标准时,动手滚动就会跳跃。

我的代码是:

$(document).ready(function () {

  function createBigData() {
    var rows = []
      , i
      , j;

    for (i = 0; i < 10; i++) {
      var row = [];
      for (j = 0; j < 7; j++) {
        row.push(Handsontable.helper.spreadsheetColumnLabel(j) + i + "\n2nd_row");
      }
      rows.push(row);
    }

    return rows;
  }

  $('#example1').handsontable({
    data: createBigData(),
  });
});

jsfiddle:http://jsfiddle.net/LR4Ne/

尝试滚动到表格的底部。你看到它来回跳跃吗?

我注意到旧版本的handontable js没有那样工作,试着改变

<script src="http://handsontable.com/dist/jquery.handsontable.full.js"></script>

<script src="http://old.handsontable.com/dist/jquery.handsontable.full.js"></script>

它现在可以正常工作。

请指教。 提前谢谢!

- 梅德

1 个答案:

答案 0 :(得分:0)

我完全确定新的简介版本的问题是什么,但问题是由于您进入每个单元格的\n换行符而出现。 Handsontable有一种方法可以将标记输入到单元格中,我已经在fiddle中使用了该方法,但问题仍然存在。如果删除\n并添加更多行,则可以正常工作。 (旁注:我在这里使用了<br>,因为我认为在语义上更有意义,但是你使用它并不重要。)你会注意到在这个例子中,你可以滚动,但是一次你到了底部,它又开始变得狂热了。这导致我:

要解决此问题,您可以定义插件使用的.wtHider类的最小高度。这是一个有效的fiddle,展示了如何解决问题。

这里的主要问题是,滚动时,handsontable实际上是使用新查看的行重新渲染表。重新渲染后,handontable会动态设置.wtHider.wtHolder的高度,这就是造成问题的原因。

这是一个“hacky”解决方案,但它应该可以满足您的需求。希望这会有所帮助。

根据请求,这是另一个小问题,修复了表格底部的空格问题:http://jsfiddle.net/8awo0gzk/1/