我在网站的每个网页上都有一些jQuery代码(在head元素中)。
我可以使用哪种选择器语法告诉jQuery某个功能应该只在一个页面上运行而不是在网站上的所有其他页面上运行?
我可以以某种方式在选择器中指定页面名称或URL吗?
非常感谢
答案 0 :(得分:31)
您可以使用if语句检查top.location.pathname。
if (top.location.pathname === '/my/path')
{
/* magic ... */
}
或者如果你想让它更具可移植性并给出实际的if语句一些意义(所以有人阅读它会知道它是什么) - 如果你有权访问文档的body元素,你可以添加一个类显示你想运行这个脚本。
例如,如果上面示例中的/* magic ... */
与包含Facebook API有关,则可以使您的正文看起来像<body class="has-facebook-api">
,然后使用jQuery进行检查:
$(function () // on document.ready()
{
if ($('body.has-facebook-api').length > 0)
{
/* magic ... */
}
});
确保在将jQuery包含在单独的脚本标记中之后运行。
虽然我们正在使用它,如果您在输出之前没有使用此脚本来转换页面的视觉效果,我建议您将所有或大部分脚本标记放在靠近页脚的位置进行渲染页面越早。
答案 1 :(得分:2)
也许检查window.location.pathname
?
if (window.location.pathname == "/path/to/page.html") {
callFunction();
}
答案 2 :(得分:1)
您无法在jQuery Selector中指定当前URL,但您可以使用document.location
对象编写一个简单的检查:
if (document.location.pathname == "/somefolder/somepage") {
// do some special stuff on this page!
}
答案 3 :(得分:0)
我喜欢用你编写应用程序的任何语言来做这样的事情。你的布局/模板/提供你的html的任何东西都可以简单地输出一个真/假的javascript变量
if ($page = '/foo/bar.html/') {
echo 'baz = true';
} else {
echo 'baz = false';
}
然后让你的js检查baz以确定你是否应该运行这些功能。在这种情况下,你不是100%依赖js,但是imo更好。您的服务器将始终知道您所在的页面/网址,并且您不必担心浏览器与您的js不兼容,并试图确定它所在的页面。