为不同页面包含特定jQuery选择器的最佳方法

时间:2014-04-19 11:34:37

标签: jquery performance

这是我们经常遇到的问题。考虑一下这个jQuery:

$(".tabs").remove();

以上情况很好,但是,如果在100个单独的页面中只有1个页面带有"标签"类。

到目前为止,我们的解决方案是:

if ($("body#library").length > 0) {
    $(".tabs").remove();
    // More Library page specific code here
} else if ($("body#links").length > 0) {
    // Links page specific code here
}

然后在所需的页面上我们这样做:

<body id="library">

我的想法是找到$("body#library")对于jQuery来说会很快。然后,我们可以为每个页面提供一个ID,并使用单个JavaScript文件,我们可以为每个页面包含特定于页面的代码。

我担心的是,这仍然不是非常有效。另一个想法是为每个页面提供一个特定的JavaScript文件。但是这会增加HTTP请求。我经常看到每页包含10个或更多JavaScript网页的网站,在我看来,这个网站太重了。我们更喜欢单个站点范围的JavaScript文件,因为它更易于管理,意味着只需要请求(和缓存)一个文件。

关于如何处理这个问题还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

我想这取决于用户打开几个不同页面的可能性。

如果用户可能只加载库链接页面,我将使用所有页面中包含的一个全局javascript文件,并在每个页面上使用第二个,仅包含特定页面所需的代码

但是,如果用户可能会打开许多​​/大多数页面,我会将其放在一个大文件中,并以某种方式确定需要运行哪些代码(例如在主体上使用ID)。

此外,如果从选择器中删除标记名称,它将更快,因为它可以直接使用本机getElementById()函数。 ($('#library')代替$('body#library'))。

请参阅我设置的performance test

相关问题