如何使用location.href而不是location.pathname

时间:2011-08-04 13:59:05

标签: javascript jquery html

我的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

这里的任何帮助都非常感谢!

3 个答案:

答案 0 :(得分:3)

使用字符串连接来包含查询:

var path = location.pathname + location.search;

答案 1 :(得分:3)

显然,location.href包含不在链接中的文本(协议和主机名:“http:// localhost /”)。

在进行比较之前,您需要将其从location.href中删除,或将其添加到您的链接中。

答案 2 :(得分:1)

只是location.hrefwindow.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;
                } 
            });
        }