views:

46

answers:

4

I have some jQuery code that is on every web page of the site (in the head element).

What selector syntax can I use to tell jQuery that a certain function should only run on one page and not all the other pages on the site?

Can I specify a page name or URL in the selector somehow?

Many Thanks

+1  A: 

Maybe check window.location.pathname?

if (window.location.pathname == "/path/to/page.html") {
    callFunction();
}
Kyprus
+2  A: 

You could use an if statement checking for top.location.pathname.

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

Or if you want to make it more portable and give the actual if statement some meaning (so someone reading it will know what it's about) - if you have access to the body element of the document, you can add a class showing that you want to run this script.

So for instance, if /* magic ... */ in the above example has something to do with including the Facebook API, you could make your body look like <body class="has-facebook-api"> and then make a check with jQuery:

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

Make sure this runs after including jQuery inside a separate script tag.


While we're at it, if you're not using this script to transform the visuals of your page before it gets outputted, I'd advise you to place all or most of your script tags close to your footer to render the page sooner.

Denis 'Alpheus' Čahuk
I would recommend adding a class or id to the body tag and going from there. This way, even if you move your site or your file structure, it will still work.
Chris Schmitz
I don't have access to anything but a global head element for css/js .. so what I add is the same on every page.. hence the need to sense what page is targeted.. but I think there is a solution lurking in all these great idea.. thanx much
Joseph
A: 

You can't specify the current URL in a jQuery Selector, you can however write a simple check using the document.location object:

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

I prefer to do stuff like this in whatever language you are writing your app in. Your layout/template/whatever that is serving up your html could simply output a true/false to a javascript variable

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

Then have your js check baz to determine whether you should be running these functions or not. You aren't relying 100% on js in this instance, but imo that's better. Your server is going to always know what page/url you are on, and you won't need to worry about browser incompatibilities with your js trying to determine what page it resides on.

threendib