URL - просмотрите URL для строки - PullRequest
2 голосов
/ 06 июля 2011

У меня есть следующее HTML-меню:

<ul>
    <li><a href="About/about-page.html"></a></li>
    <li><a href="Services/services-page.html"></a></li>
</ul>

Как я могу с помощью jQuery проверить, содержит ли текущий URL строку, например, 'About /' (как 'about' any case + '/')?

Где 'About /' может быть любым словом.

В основном, бегите по моему меню и проверяйте, есть ли строка, совпадающая с частью URL. Например, что:

  • www.website.com / about / = true
  • www.website.com / about / something.html = true
  • www.website.com / about -thing.html = false
  • www.website.com / services / about.html = false

Любая помощь высоко ценится.

Ответы [ 3 ]

2 голосов
/ 06 июля 2011

Предполагая, что переменная currentURL содержит строку, которую вы хотите проверить, и вам все равно, есть ли в ней верхний регистр 'A':

if(currentURL.toLowerCase().indexOf("about") != -1) {
   //Contains 'about'
}

Если вы хотите использовать URLтекущей страницы:

var currentURL = window.location.href;

Исходя из вашего комментария, я думаю, что вы пытаетесь применить класс к любому элементу a в вашем списке со словом "about" в атрибуте href.В этом случае:

$("li > a").filter(function() {
   if($(this).attr("href").toLowerCase().indexOf("about") != -1) return true;
   return false;
}).addClass("newClass");

Обновление (на основе ваших комментариев)

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

function applyClass(keyword, class) {
    $("li > a").filter(function() {
       if($(this).attr("href").toLowerCase().indexOf(keyword) != -1) return true;
       return false;
    }).addClass(class);
}
applyClass('service', 'newClass'); //Or for example applyClass('about', 'newClass');
1 голос
/ 06 июля 2011

jQuery позволяет выбирать элементы с атрибутами, значение которых содержит подстроку

$('a[href*="about"]')

Если вы добавляете «текущий» или «активный» класс к «текущему выбранному» пункту навигационного меню, вы можете использовать следующий селектор:

$('a.active[href*="about"]')

EDIT:

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

$('a[href="' + window.location.pathname + '"]');

Измените window.location.pathname соответственно, если ваши hrefs полностью квалифицированы. См. http://davidwalsh.name/javascript-window-location для атрибутов window.location.

1 голос
/ 06 июля 2011

Вам не нужен jQuery.Обычный старый js подойдет:

if( window.location.href.indexOf("About/") < 0 )
// Do something!

Вы также можете использовать window.location.href.toLowerCase().indexOf, если хотите, чтобы регистр не учитывался.

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