jQuery(或textOverflow)花了太长时间

时间:2011-09-22 20:29:53

标签: jquery

当我们检测到Firefox时,我们会调用

jQuery('.trunc').textOverflow();

但如果页面很长,Firefox会发出“无响应脚本”警报。我相信实际的问题是在最初的jQuery调用中(当它通过CSS找到所有匹配的DOM元素时)。

我不是jQuery专家,但看起来它真的有利于一种风格,它可以构建所选项目的列表并将它们传递给链条。所以可能没有一个很好的解决方法。但是,有吗?我不关心链接,我只想将textOverflow发送到相关元素。

2 个答案:

答案 0 :(得分:1)

在黑暗中拍摄一点点,但您可能想尝试更改选择器以包含标签名称。由于这可以避免查询整个DOM,并将其限制为仅仅那些标记,因此效率更高。

jQuery('span.trunc').textOverflow();

用相关标签替换span。不确定它是否会有所作为,但无论如何它都更有效:)

祝你好运!

答案 1 :(得分:1)

这取决于你谈论的元素数量,但是你的类选择器应该在Firefox中非常快,即使有很多元素。这是因为Firefox支持getElementsByClassName本机方法...所以你拥有的选择器基本上与对document.getElementsByClassName("trunc")的调用相同。

我认为罪魁祸首是textOverflow调用,因为Firefox本身不支持这个CSS功能,所以我想象textOverflow插件会做很多字符串处理/ DOM / CSS操作获得正确的文本溢出行为。

你可以通过在没有textOverflow()调用的情况下调用选择器来测试它,看看需要多长时间:

var truncElements = $('.trunc');

如果上面的代码在Firefox中的大页面上快速运行,那么我会责怪textOverflow。