1

只是在有意义的情况下徘徊,在 jquery 文档就绪函数中使用如下 if 语句,以确保仅在特定页面上触发脚本..

 if(window.location.href.indexOf("our-team")>= 0){
            if(window.location.hash) {
                var hash = window.location.hash;
                $('#teamMembers div:not('+hash+')').hide();
                $("#teamMenu .imgHolder").removeClass('active');
                $('a[href='+hash+']').closest(".imgHolder").addClass('active');
            }
            else {
                $('#teamMembers div:not(#member1)').hide();
            }
        }

这可能不是很有效,但是如果当前页面在 url 中不包含 our-team,则 if 语句是停止脚本运行所必需的。

有什么想法吗?

4

1 回答 1

1

如果您不在这些项目不存在的页面上运行大量选择器操作,您将获得最佳性能。因此,如果通过检查 URL 或其他一些快速检查很容易过滤掉这些选择器操作,那么出于性能原因,这可能是可取的。

就个人而言,我更喜欢在 body 标记上使用类名来识别页面类型,而不是检查 URL。这意味着您更多的是寻找预期的内容,而不是内容的来源,如果管理站点的人决定更改 URL 布局或名称,您的代码将不会依赖于此。

if ($(document.body).hasClass("ourteam")) {
    if (window.location.hash) {
        var hash = window.location.hash;
        $('#teamMembers div:not('+hash+')').hide();
        $("#teamMenu .imgHolder").removeClass('active');
        $('a[href='+hash+']').closest(".imgHolder").addClass('active');
    } else {
        $('#teamMembers div:not(#member1)').hide();
    }
}

从技术上讲,如果您使用的选择器都不存在于您不想处理的页面中,则不需要第一个 if 语句。但是在许多不适用的页面上运行 4-5 个额外的选择器操作效率不高。而且,如果每个页面在普通 JS 中都有这种类型的代码,因此它是 4-5 个操作 * 50 个页面,那么这将是很多浪费的选择器操作,并且会真正影响站点性能。您拥有的页面越多,您在另一个页面中重复选择器并发现一个页面中的 JS 也会意外影响另一个页面的机会就越大。

于 2012-04-11T09:08:19.737 回答