我的Javascript功能如下:
function markActiveLink() {
var path = location.pathname;
var home = "/";
if (path == home)
return
$("a[href='" + [path || home] + "']").parents("li").each(function () {
$(this).removeClass('menu_item');
$(this).addClass("menu_item_active");
});
}
但我想使用document.location.href
代替location.pathname
来查找链接。我试过改变它,但功能根本不起作用 - >我的链接都没有被选中。
我的部分链接的代码如下:
<ul>
<li><a href="<%=System.Configuration.ConfigurationManager.AppSettings("VirtualDirectory").ToString()%>User/UserOrder.aspx?id=<%=pe.UserId%>&type=NMO">
<%=Me.GetLocalResourceObject("NMOrders.Text")%>
</a></li>
<li><a href="<%=System.Configuration.ConfigurationManager.AppSettings("VirtualDirectory").ToString()%>User/UserOrder.aspx?id=<%=pe.UserId%>&type=MO">
<%=Me.GetLocalResourceObject("MOrders.Text")%>
</a></li>
<li><a href="<%=System.Configuration.ConfigurationManager.AppSettings("VirtualDirectory").ToString()%>User/UserPage.aspx?id=<%=pe.UserId%>">
<%=Me.GetLocalResourceObject("UserPage.Text")%>
</a></li>
</ul>
在页面上,这些链接源看起来像:
<ul>
<li><a href="/App/User/UserOrder.aspx?id=949abc91-a644-4a02-aebf-96da3ac7d8e1&type=NMO">
User Orders NMO
</a></li>
<li><a href="/App/User/UserOrder.aspx?id=949abc91-a644-4a02-aebf-96da3ac7d8e1&type=MO">
User Orders MO
</a></li>
<li><a href="/App/User/UserPage.aspx?id=949abc91-a644-4a02-aebf-96da3ac7d8e1">
User Page
</a></li>
</ul>
使用这些链接val.loc的名称只有/App/User/UserOrder.aspx
,我需要检查整个链接。这就是我尝试使用location.href的原因。
location.href例如:http://localhost/App/User/UserOrder.aspx?id=949abc91-a644-4a02-aebf-96da3ac7d8e1&type=MO
然后location.pathname为:/App/User/UserOrder.aspx
这里的任何帮助都非常感谢!
答案 0 :(得分:3)
使用字符串连接来包含查询:
var path = location.pathname + location.search;
答案 1 :(得分:3)
显然,location.href包含不在链接中的文本(协议和主机名:“http:// localhost /”)。
在进行比较之前,您需要将其从location.href中删除,或将其添加到您的链接中。
答案 2 :(得分:1)
只是location.href
或window.location.href
而不是document.location.href
试试这个
function markActiveLink() {
var path = location.pathname;
var home = "/", $this, href, locationHref = location.href.toLowerCase();
if (path == home)
return;
$("ul li").removeClass('menu_item');
$("ul a").each(function () {
$this = $(this);
href = $this.attr("href").toLowerCase();
if(locationHref.substring(locationHref.length - href.length) == href)
{
$this.closest("li").addClass("menu_item_active");
return false;
}
});
}