如何告诉jQuery仅在一个特定的网页上运行一个函数?

我在网站的每个网页上都有一些jQuery代码(在head元素中)。

我可以用什么选择器语法告诉jQuery某个函数应该只在一个页面上运行而不是在站点上的所有其他页面上运行?

我可以以某种方式在选择器中指定页面名称或URL吗?

非常感谢

您可以使用if语句检查top.location.pathname。

if (top.location.pathname === '/my/path') { /* magic ... */ } 

或者如果你想让它更具可移植性并给出实际的if语句一些意义(所以有人阅读它会知道它是什么) – 如果你有权访问文档的body元素,你可以添加一个显示你想要的类运行此脚本。

例如,如果上面的例子中的/* magic ... */与包含Facebook API有关,你可以让你的身体看起来像然后制作一个用jQuery检查:

 $(function () // on document.ready() { if ($('body.has-facebook-api').length > 0) { /* magic ... */ } }); 

确保在将jQuery包含在单独的脚本标记中之后运行。


虽然我们正在使用它,如果您在输出之前没有使用此脚本来转换页面的视觉效果,我建议您将所有或大部分脚本标记放在靠近页脚的位置,以便更快地呈现页面。

也许检查window.location.pathname

 if (window.location.pathname == "/path/to/page.html") { callFunction(); } 

您不能在jQuery Selector中指定当前URL,但是您可以使用document.location对象编写一个简单的检查:

 if (document.location.pathname == "/somefolder/somepage") { // do some special stuff on this page! } 

我喜欢用你正在编写应用程序的任何语言来做这样的事情。你的布局/模板/提供你的html的任何东西都可以简单地输出一个真/假到一个javascript变量

 if ($page = '/foo/bar.html/') { echo 'baz = true'; } else { echo 'baz = false'; } 

然后让你的js检查baz以确定你是否应该运行这些function。 在这种情况下,你不是100%依赖于js,但imo更好。 您的服务器将始终知道您所在的页面/url,并且您不必担心浏览器与您的js不兼容,并试图确定它所在的页面。