Any*_*ify 11 html javascript jquery
我正在实施热图以显示所有用户使用Patrick Wied的heatmaps.js点击我的页面.Heatmap是从每个元素的"datapoints"集合加载的.但是加载需要太长时间......
问题描述:
每个数据点都有页面上HTML元素的X,Y坐标和选择器(使用selectorator.js检索).目前我每页得到大约5k点,我需要检查是否有一些元素没有隐藏,所以我们不会显示隐藏元素的热图.
目前我正在使用:
element = $(data.points[i].Element);
element.is(":hidden"))
Run Code Online (Sandbox Code Playgroud)
但这需要大约7秒来检查所有那些很长的点.我已经没有想法如何避免/优化这个问题.
数据点细节:
元素:#pageData> tbody> tr:eq(3)> td:eq(4)> a:eq(0)
Y:0.6546159
X:0.4444231
伪脚本流程描述:
FOREACH(point in allDatapoints)
{
...
calculation of some parameters needed to show on heamapat
...
if (point.element.is(":hidden"))
{
continue;
}
pointsToDisplay.push(point)
}
Run Code Online (Sandbox Code Playgroud)
我也试图获取所有隐藏元素GetSelector()的选择器,但是在selectorator.js中然后只是通过该数组,但它几乎与is(:hidden)函数相同.
我希望这是有道理的.
事实:获取元素的选择器可能需要一些时间,但是反向过程(获取和基于选择器的元素)几乎没有时间. - >所以我不能简单地发送隐藏元素的选择器数组并过滤那些会快得多的元素.
查看 的来源selectorator似乎表明它通过使用索引生成选择器;IEpageData > tbody > tr:eq(3) > td:eq(4) > a:eq(0)
现在,通过该选择器检索元素看起来非常复杂(我假设需要解析它,并执行选择器来检索实际元素;
我猜这就是花了这么长时间的原因,正如我在评论中所说,个人资料确实会有所帮助。
那么,在不尝试解决这个确切问题的情况下,您是否可以保存display元素的属性?这将消除通过 jQuery 检查的需要。
手动检查示例
element = $(element);
while (element.tagName.toLowerCase() !== 'body') {
if (element.style.display === 'none') {
return false;
}
element = element.parentNode;
if (!element) break;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
236 次 |
| 最近记录: |