我正在制作基于 jquery 的甘特图,但遇到了问题。甘特图可用于显示相当庞大的项目(100 到 500 个任务)。甘特图的条形图保存在 DIV 中。给500
DIV 保证金是相当缓慢的。我已经做了一些思考/测试,似乎包装所有的 DIV,然后给出包含 DIV 边距的工作要快得多。
当前结构(简化):
<tr class="task-row">
<td>Task Name</td>
<td><div class="gantt-bar"></div></td>
</tr>
我可以移动所有甘特条的唯一方法是全部选择它们,然后添加边距。
$(".gantt-bar").css("margin-left", "+=24px");
建议的结构(简化):
<div>
<div class="left-panel">
<div>Project Name</div>
</div>
<div class="right-panel">
<div class="container">
<div class="gantt-bar"></div>
</div>
</div>
</div>
在这种情况下,移动容器 DIV 会更快。
$(".container").css("margin-left", "+=24px");
示例:http: //jsfiddle.net/cvJqP/2/
那个小提琴告诉我它应该工作。我问这个问题而不是实施的原因是目前整个事情都是用一张桌子完成的,把它改成与 DIV 一起工作是一项相当大的任务。只是想在我开始做之前确保这真的有效。
这是解决问题的最佳方法吗?有没有办法保持表的实现?
谢谢。
使用的解决方案:
<tr class="task-row">
<td>Task Name</td>
<td><div class="base"><div class="gantt-bar"></div></div></td>
</tr>
var newmargin = parseInt($(".base:first-child").css("margin-left").replace("px", "")) + 24 + "px";
$(bars).css('margin-left', newmargin);
这更快,因为不必为每个 DIV 重新计算保证金。