javascript - 如何向 slickgrid 的每个单元格添加 jquery ui slider ?

标签 javascript jquery jquery-ui slickgrid jquery-ui-slider

我需要向 slickgrid 的每个单元格添加一个 jquery ui slider 。记录数量超过 10,000 条,超过 150 列。问题是初始的一组 slider 渲染得很好,但当我滚动(向左或向右)时,它们消失了。不知何故,这些单元格的网格并没有变得无效。我在列上使用以下格式化程序:

SliderFormatter = function (row, cell, value, colDef, dataContext) {
     var html = "<div class='mySlider' id='slider_" + dataContext['id'] + "'></div>" + value;
     return html;
 }

并从我的 document.ready 回调中调用 slider 。

任何帮助将不胜感激。提前致谢!

最佳答案

SlickGrid 仅渲染视口(viewport)中可见的内容以及一个小缓冲区。当您滚动时,行/单元格会动态添加和删除。

这对您的情况意味着什么,当您初始化 document.ready 中的 slider 小部件时回调中,您只初始化了其中的一小部分,而那些已初始化的单元格,当 SlickGrid 删除并重新创建它们所在的单元格时,不会重新初始化。

SlickGrid 不允许您使用 jQuery 小部件(例如单元格中的 slider ),并且要求格式化程序输出纯 HTML,以便难以以会减慢速度的方式实现网格。 (我不会深入探讨这个公认的有争议的决定背后的推理。)

我的建议是避免在此处使用 jQuery UI slider 。它的可扩展性或性能根本不够。如果没有虚拟化,您想要做的事情是不可能的 - 初始化 100 个 slider 将会非常慢;初始化其中 10'000 x 150 是不可能的。通过虚拟化,您需要在滚动时动态初始化和销毁​​它们,而这太慢而无法平滑滚动。

考虑使用 HTML5 范围输入 - <INPUT type="range"> 。除 IE <10 之外的所有主要浏览器都支持它。请参阅http://caniuse.com/#feat=input-range .

关于javascript - 如何向 slickgrid 的每个单元格添加 jquery ui slider ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20343983/

相关文章:

javascript - 根据使用的邀请码为新成员分配角色

javascript - 在 Froala 编辑器中插入文件时,光标始终位于回形针图标之前

jquery - $.get() 在 IE 中有效,但在 FF 中无效

jquery - 选择日期后添加天数(周末和节假日除外)

jquery-ui - 如何在 jQuery 中禁用模式对话框的“确定”按钮

javascript - .apply 到底是做什么的?

javascript - 通过 Javascript 动态渲染 AlloyUI Modal body HTML

Javascript 无效日期字符串

jquery - 语法错误,jQuery 中无法识别的表达式

jquery - 在动态添加的元素上调用 jquery 方法