jquery如果url第一个路径名匹配href则

时间:2012-10-07 01:18:01

标签: jquery regex url filter href

这也是对这个其他线程的引用:jQuery - If URL matches href then move LI to top of UL?

Jquery代码:

//set var to current url
var url = window.location.toString();

//if url matches li's anchor then bring it to the top of the list
$('.nav li a').each(function(){
   var myHref= $(this).attr('href');
   if( url == myHref) {
        $(this).closest("li").prependTo(".nav");
   }
});

HTML只是来自Wordpress导航,所以类似于:

<navrole="navigation">
  <ul>
    <li>
      <a href="">

导航指向类别,并且网址匹配href的罚款并且代码有效。但是,当我在一个类别的子页面中时,我无法弄清楚如何使代码也被触发,例如当url是:

domain.com/category-name/child-page

如果我能让Jquery只检测通过域的第一个路径名,那么我将是金色的。超过第一个路径名的任何内容都可以省略或设置为外卡或其他内容。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您可以尝试使用attribute contains selector

var dom = document.domain;
var f = location.pathname.split('/')[1]; 
var url = dom + "/" + f;

$('.nav li a[href*="'+url+'"]').closest("li").prependTo(".nav");

答案 1 :(得分:0)

我已经为我的网站实施了这样的技术。我是这样做的:

var Tabs = ["Tab1", "Tab2", "Tab3", "Tab4", "Tab5"];
var pathname = document.location.pathname;
for (var i = 0; i < Tabs.length; i++) {

    //RegExp to check the name after first '/'
    var TabRE = new RegExp("^\/(" + Tabs[i] + ")");
    if (TabRE.test(pathname)) {
        //Tab identified!!!
    }

或者,如果您只想获得“通过域名的第一个路径名”,您只需执行

即可
var path = (document.location.pathname).substring(1);
var name;
if (path.indexOf('/') >= 0)
    name = path.substring(0, path.indexOf('/'));
else name = path;

答案 2 :(得分:0)

您将要使用路径名访问域名后的所有内容。然后在斜杠上拆分字符串。

var pathname = window.location.pathname;  //"category-name/child-page"
var path_components_arr = pathname.split("/");  //array containing components from above, in order.

然后path_components为您提供一个数组,每个元素都是斜杠之间路径的一部分。 听起来你只需要该数组的第一个元素...... 我相信你可以从那里拿走它!

希望有所帮助!