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

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

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

Я могу указать название страницы или URL в селекторе так или иначе?

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

15
задан Joseph 21 June 2010 в 18:10
поделиться

4 ответа

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

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

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

Так, например, если / * magic ... * / в приведенном выше примере имеет какое-то отношение к включению API Facebook, вы можете сделать свое тело похожим на , а затем выполните проверку с помощью jQuery:

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

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


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

32
ответ дан 1 December 2019 в 01:30
поделиться

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

if (window.location.pathname == "/path/to/page.html") {
    callFunction();
}
2
ответ дан 1 December 2019 в 01:30
поделиться

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

if (document.location.pathname == "/somefolder/somepage") {
   // do some special stuff on this page!
}
1
ответ дан 1 December 2019 в 01:30
поделиться

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

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

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

0
ответ дан 1 December 2019 в 01:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: