这也是对这个其他线程的引用: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只检测通过域的第一个路径名,那么我将是金色的。超过第一个路径名的任何内容都可以省略或设置为外卡或其他内容。
有什么想法吗?
答案 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为您提供一个数组,每个元素都是斜杠之间路径的一部分。 听起来你只需要该数组的第一个元素...... 我相信你可以从那里拿走它!
希望有所帮助!