У меня есть некоторый код jQuery, который находится на каждой веб-странице сайта (в главном элементе).
Какой селекторный синтаксис я могу использовать, чтобы сказать jQuery, что определенная функция должна только работать на одной странице и не все другие страницы на сайте?
Я могу указать название страницы или URL в селекторе так или иначе?
Большое спасибо
Вы можете использовать оператор 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 в отдельный тег скрипта.
Пока мы это делаем, если вы не используете этот скрипт для преобразования визуальных элементов вашей страницы до того, как она будет выведена, я бы посоветовал вам разместить все или большую часть ваших тегов скрипта близко к нижнему колонтитулу для рендеринга страницу раньше.
Может быть, проверьте window.location.pathname
?
if (window.location.pathname == "/path/to/page.html") {
callFunction();
}
Вы не можете указать текущий URL в селекторе jQuery, однако вы можете написать простую проверку, используя document.location
object:
if (document.location.pathname == "/somefolder/somepage") {
// do some special stuff on this page!
}
Я предпочитаю делать подобные вещи на любом языке, на котором вы пишете свое приложение. Ваш макет / шаблон / все, что обслуживает ваш html, может просто выводить true / false в переменную javascript
if ($page = '/foo/bar.html/') {
echo 'baz = true';
} else {
echo 'baz = false';
}
Затем пусть ваш js проверит baz, чтобы определить, следует ли вам запускать эти функции или нет. В этом случае вы не полагаетесь на js на 100%, но мне так лучше. Ваш сервер всегда будет знать, на какой странице / URL вы находитесь, и вам не нужно беспокоиться о несовместимости браузера с вашим js, пытаясь определить, на какой странице он находится.