Как сообщить jQuery, чтобы запустить функцию только на одной конкретной веб-странице?

У меня есть код jQuery, который находится на каждой веб-странице сайта (в элементе head).

Какой синтаксис селектора я могу использовать, чтобы сообщить jQuery, что определенная функция должна работать только на одной странице, а не на всех других страницах сайта?

Можно ли каким-либо образом указать имя страницы или URL-адрес в селекторе?

Большое спасибо

Ответы

Ответ 1

Вы можете использовать проверку if для top.location.pathname.

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

Или, если вы хотите сделать его более переносимым и дать фактическое утверждение if какое-то значение (так что кто-то, читающий его, будет знать, о чем он) - если у вас есть доступ к элементу body документа, вы можете добавить класс, показывающий что вы хотите запустить этот script.

Так, например, если /* magic ... */ в приведенном выше примере имеет какое-то отношение к включению API Facebook, вы можете сделать ваше тело похожим на <body class="has-facebook-api">, а затем сделать чек с помощью jQuery:

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

Убедитесь, что это выполняется после включения jQuery внутри отдельного тега script.


Пока мы это делаем, если вы не используете этот script, чтобы преобразовать визуальные изображения вашей страницы до того, как она будет выведена, я бы посоветовал разместить все или большинство ваших тегов script рядом с ваш нижний колонтитул, чтобы сделать страницу раньше.

Ответ 2

Возможно, проверьте window.location.pathname?

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

Ответ 3

Вы не можете указать текущий URL-адрес в селекторе jQuery, однако вы можете написать простую проверку, используя document.location:

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

Ответ 4

Я предпочитаю делать такие вещи на любом языке, на котором вы пишете свое приложение. Ваш макет/шаблон/все, что обслуживает ваш html, может просто выводить true/false переменной javascript

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

Затем попросите js проверить baz, чтобы определить, должны ли вы выполнять эти функции или нет. Вы не полагаетесь на 100% на js в этом случае, но это лучше. Ваш сервер всегда будет знать, на какой странице/URL-адресе вы находитесь, и вам не нужно беспокоиться о несовместимости браузера с вашим js, пытаясь определить, на какой странице он находится.