Как мне сказать jQuery запускать функцию только на одной конкретной веб-странице? - PullRequest
15 голосов
/ 21 июня 2010

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

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

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

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

Ответы [ 4 ]

31 голосов
/ 21 июня 2010

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

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

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

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

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

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


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

2 голосов
/ 21 июня 2010

Может быть, проверить window.location.pathname?

if (window.location.pathname == "/path/to/page.html") {
    callFunction();
}
1 голос
/ 21 июня 2010

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

if (document.location.pathname == "/somefolder/somepage") {
   // do some special stuff on this page!
}
0 голосов
/ 21 июня 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...