javascript
  • jquery
  • html
  • 2011-08-04 8 views 0 likes 
    0

    のLOCATION.HREF使用方法私のJavascriptの機能は以下のようになります。代わりlocation.pathname

     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> 
    

    そしてlocation.pathnameのvaluse、それらのリンクを持つだけだろう/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

    ここで任意の助けに感謝します! LOCATION.HREFテキスト(プロトコルが含まれています明らかに

    var path = location.pathname + location.search; 
    
    +0

    location.pathnameとlocation.hrefの出力の例と、選択しようとしているリンクの例を投稿できますか?それは本当に問題を理解するのに役立つだろう。 – alnorth29

    +0

    私は、リンクのソースコードと、私が選択したいリンクのexample.pathnameとlocation.hrefを追加しました。 – Marta

    答えて

    3

    +0

    これが答えです。 – Mattis

    +0

    それは解決策のようです。 location.hrefからドメイン名(localhostなど)を削除する方法を知っていますか? – Marta

    +0

    'location.href.replace(/.*\/\/[^\/]*/、 '')'のようなものが動作するかもしれません。それは3番目のスラッシュまですべてを置き換えます。私は今すぐすぐにまとめるように正規表現が常に機能するとは保証できません。 – alnorth29

    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; 
           } 
          }); 
         } 
    
    +0

    私はlocation.pathnameの代わりにlocation.hrefまたはwindow.location.hrefの両方を使用しようとしましたが、どれも動作していません - >リンクが選択されていません。 – Marta

    +0

    あなたはマークアップのあなたの部分を投稿できますか? – ShankarSangoli

    +0

    私の編集した答えを確認してくださいそれはあなたを助けてくれることを願っています。 – ShankarSangoli

    2

    使用し、文字列の連結を試していますおよびホスト名: "http:// localhost /")が含まれています。

    比較する前にlocation.hrefから削除するか、リンクに追加する必要があります。

    +0

    私はそれをチェックして、それは非常にうまくいっています。しかし、ホームページが読み込まれているときは、最初から動作しません。メニューのホームページリンクは選択されていません。メニュー項目(ホームページなど)をクリックしてからもう一度ページをロードしてから、右メニュー項目を選択する必要があります。 – Marta

    関連する問題