2

我们正在使用 Twitter Bootstrap 作为框架构建一个 Web 应用程序,并且在显示/隐藏工具提示时遇到了问题。除了试图找到实际问题的解决方案之外,我还有一个关于我们同时使用的解决方法的问题:

性能方面,使用 setInterval() 通常是个坏主意吗?

我如何衡量由此造成的性能影响?

有没有更好的方法来不断检查元素的存在并删除它们?

// temporary workaround to remove unclosed tooltips
setInterval(function() {
    if ( $('.tooltip.in').length > 1 ) {
        $('.tooltip').remove();
    }
}, 1000);
4

2 回答 2

1

如果您真的非常担心性能,使用实时节点列表可能会更快:

var tooltipInNodes = document.getElementsByClassName("tooltip in");
var tooltipNodes = document.getElementsByClassName("tooltip");

setInterval(function() {
    if ( tooltipInNodes.length > 1 ) {
        $(tooltipNodes).remove();
    }
}, 1000);

不过,这不太可能有太大的不同,正如已经提到的,使用长间隔的 setInterval(一秒大,4ms 小)不太可能产生任何重大影响。

于 2013-04-19T12:27:49.893 回答
0

最好避免这种技术,但在找到真正的解决方案之前,您可以优化此解决方法。

创建一个非匿名函数并调用它,您将避免每秒“创建上下文函数”。

您还可以通过缓存和指定标签名称来优化 jQuery 选择器。

setInterval(tmp_workaround, 1000);

function tmp_workaround() {
  var $selectors = $('[TAG IF ALWAYS THE SAME].tooltip.in');

  if ( $selectors.length > 1 ) {
    $selectors.remove();
  }
}
于 2013-04-19T12:03:54.103 回答