URL - 查看字符串的URL

时间:2011-07-06 13:53:59

标签: jquery jquery-selectors

我有以下html菜单:

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

我如何使用jQuery检查当前网址是否包含例如'关于/'的字符串(如“关于'任何情况+'/')?”

'关于/'可以是任何单词。

基本上通过我的菜单运行并检查是否有与URL部分相同的字符串。 例如:

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

任何帮助非常感谢。

3 个答案:

答案 0 :(得分:2)

假设变量currentURL包含您要检查的字符串,并且您不关心它是否有一个大写的'A':

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

如果您想使用当前页面的网址:

var currentURL = window.location.href;

根据您的评论,我认为您正在尝试将一个类应用于列表中的任何a元素,并在href属性中使用“about”一词。在那种情况下:

$("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 :(得分:1)

你不需要jQuery。普通的旧js会很好:

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

如果您想要不区分大小写,也可以使用window.location.href.toLowerCase().indexOf

答案 2 :(得分:1)

jQuery允许选择具有值包含子字符串

的属性的元素
$('a[href*="about"]')

如果您将“当前”或“有效”类添加到“当前选定的”导航菜单项,则可以使用以下选择器:

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

修改

阅读您的一些评论,我想您可能需要找到与当前网址匹配的任何导航项。所以......

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

如果您的href完全合格,请相应地更改window.location.pathname。有关window.location属性,请参阅http://davidwalsh.name/javascript-window-location