• 締切済み

jQueryにて現在表示しているURLにあわせてCSSを追加する方法を

jQueryにて現在表示しているURLにあわせてCSSを追加する方法を教えてください。 現在、HTMLを <ul id="#menu"> <li id="#menu_home"><a href="/index.html">HOME</a></li> <li id="#menu_1"><a href="menu_1/foo.html">MENU_1</a></li> <li id="#menu_2"><a href="menu_2/bar.html">MENU_2</a></li> <li id="#menu_3"><a href="menu_3/com.html">MENU_3</a></li> </ul> のように組んでいます。 ローカルホスト上で開発テストしているので、URLは「http://localhost/~」となります。 現在表示しているURLにあわせて、たとえば、HOMEを表示している際には、 <li id="#menu_home"><a href="/index.html" class="active">HOME</a></li> のようにCSSクラスをjQueryにて実現する方法を探しています。 JavaScriptで実現する方法はあるようなのですが、jQueryで実現できないかと試行錯誤しているものの、うまく行きません。 できる限りシンプルにしたいためjQueryやAjaxのプラグインは避けたいです。 どなたかお知恵を拝借できないでしょうか? 何卒よろしくお願いします。

  • AJAX
  • 回答数1
  • ありがとう数24

みんなの回答

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

jQueryだけで簡単にできます。 <ul id="menu"> <li id="menu_home"><a href="/index.html">HOME</a></li> <li id="menu_1"><a href="menu_1/foo.html">MENU_1</a></li> <li id="menu_2"><a href="/JQtest8.htm">MENU_2</a></li> <li id="menu_3"><a href="menu_3/com.html">MENU_3</a></li> </ul> に対して $(function(){ $("#menu li a").each(function(){ if($(this).attr("href")==location.pathname) $(this).toggleClass("active"); }); });

ey_wing
質問者

お礼

すいません、自己解決できました。 ありがとうございました。

ey_wing
質問者

補足

早々のご回答ありがとうございます。 いま試してみたところ、#menu li a hrefで指定しているページを表示している際はうまくいきました。しかし、menu_1/1st.htmlやmenu_1/2nd.htmlなどではうまくCSSクラスが付与されていないようです。これらにも対応するにはどうしたら良いでしょうか?

関連するQ&A

  • jQueryで記事を6列表示にしたいのです。

    jQueryで記事を6列表示にしたいのです。 jQueryで6列表示をしたいと思って試行錯誤をしていたのですが、 全くわからずじまいで、どうしたらいいのかと知恵袋に投稿致しました。 各カテゴリごとに表示をするようになっているのですが、 オールだけ全て表示になります。 5つ残して表示させればいいのですが、各カテゴリが 消えてしまうので、どうしてもオールは6行表示させたいと思っています。 どなたか助けていただけませんでしょうか? jQuery ---------------------------------------------- $(document).ready(function() { $('ul#navi a').click(function() { $(this).css('outline','none'); $('ul#navi .all').removeClass('current'); $(this).parent().addClass('current'); var filterVal = $(this).text().toLowerCase().replace(' ','-'); if(filterVal == 'all') { $('ul#portfolio li.hidden').fadeIn('slow').removeClass('hidden'); } else { $('ul#portfolio li').each(function() { if(!$(this).hasClass(filterVal)) { $(this).fadeOut('normal').addClass('hidden'); } else { $(this).fadeIn('slow').removeClass('hidden'); } }); } return false; }); }); HTML ---------------------------------------------- <ul id="navi"> <li class="all"><a href="#">All</a></li> <li><a href="#">CMS</a></li> <li><a href="#">CSS</a></li> <li><a href="#">Javascript</a></li> </ul> <ul id="portfolio"> <li class="cms"><a href="#">Movable Type</a></li> <li class="cms"><a href="#">Movable Type</a></li> <li class="cms"><a href="#">Movable Type</a></li> <li class="css"><a href="#">CSSテンプレート</a></li> <li class="javascript"><a href="#">prototype</a></li> <li class="css"><a href="#">CSSビギナー</a></li> <li class="css"><a href="#">CSSテンプレート</a></li> <li class="css"><a href="#">CSSテンプレート</a></li> <li class="javascript"><a href="#">jQuery</a></li> <li class="javascript"><a href="#">jQuery</a></li> <li class="javascript"><a href="#">jQuery</a></li> <li class="javascript"><a href="#">jQuery</a></li> <li class="javascript"><a href="#">plugin</a></li> </ul>

  • cssでロールオーバーを横並びにする記述方法のご教示をよろしくお願いい

    cssでロールオーバーを横並びにする記述方法のご教示をよろしくお願いいたします。 htmlには以下の記述をしてあります。 [html] <div id="menu"> <ul> <li id="menu1"><a href="a/index.html" title="HOME" ></a></li> <li id="menu2"><a href="b/index.html" title="ホームページ製作"></a></li> <li id="menu3"><a href="c/index.html" title="ネットショツプ製作"</a></li> <li id="menu4"><a href="d/index.html" title="SNSサイト製作"></a></li> <li id="menu5"><a href="e/index.html" title="SEOプロモーション"></a></a></li> <li id="menu6"><a href="f/index.html" title="出版・印刷・その他"></a></a></li> <li id="menu7"><a href="g/index.html" title="お問合せ・御注文"></a></li> </ul> </div> ここまでは、出来たのですが、その後のcssでどのように記述をして良いのかわからなくなってしまいました。Okwave様で何度かご質問もさせて頂き、とてもためになるご教示も頂いたのですが、どうしてもうまくいかなく難議しているところで御座います。htmlの記述は上記のように出来たのですが・・・ 画像については、以下にアップしました。よろしかったら見てみてください。 http://desktop10.web.fc2.com/test.html どうか初心者の私にご教示のほどよろしくお願いいたします。

    • ベストアンサー
    • HTML
  • HTML&CSSで「横並び」にする方法

    最近、独学でプログラミングを学び始めた初心者です。 知識が浅く、HTML&CSSで「メニューリストを横並びにする」にする方法がわかりません。 詳しい方がいたら教えてください。 ・HTMLでは <h1 id="logo"><a href="index.html"><img src="images/logo1.png"width="400"height="200"alt="KUJIRA cafe"</a></h1> <ul id="nav"> <li><a href="index.html">ホーム</a></li> <li><a href="about.html">店舗案内</a></li> <li><a href="access.html">アクセス</a></li> <li><a href="menu.html">メニュー</a></li> <li><a href="contact.html">お問い合わせ</a></li> </ul> ・CSSでは、 #nav li { display: inline; list-style-type: none; padding-right: 30px; } と書いたのですが「横並び」になりません。何が間違っているのでしょうか? これだけの情報だと回答が難しいかもしれませんが、非常に困っております。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • 「横並び」にする方法→HTML&CSS

    HTMLでは、 <!doctype html> <html> <head> <meta charset="UTF-8"> <title>KUJIRA cafeへようこそ</title> <link rel="stylesheet" type="text/css "href="css/style.css"> </head> <body> <div class="wrapper"> <!-- ヘッダー --> <h1 id="logo"><a href="index.html"><img src="images/logo1.png"width="400"height="200"alt="KUJIRA cafe"</a></h1> <ul id="nav"> <li><a href="index.html">ホーム</a></li> <li><a href="about.html">店舗案内</a></li> <li><a href="access.html">アクセス</a></li> <li><a href="menu.html">メニュー</a></li> <li><a href="contact.html">お問い合わせ</a></li> </ul> CSSでは #nav li {     display:inline;     list-style-type: none;     padding-right: 30px; } と書きましたが「横並び」になりません。何が間違っているのでしょうか? 非常に困っております。 回答よろしくお願いします。

    • ベストアンサー
    • HTML
  • jqueryによるクリック時のclass名追加

    サイドバーのメニューをクリックした際にどのページか分かるように、クリックしたリンクの色を変えたいと思います。 例えばページAリンクをクリックした際にliタグにid=selectを追加し、 他のリンクにもしid=selectがついている場合は、削除するという処理を jQueryで行いたいのですが、どのように記述すればよろしいでしょうか? 分かる方、ご教授お願いします>< ■HTML ----------------------------------- <div id="sidebar"> <ul> <li><a href="">ページA</a></li> <li><a href="">ページB</a></li> <li><a href="">ページC</a></li> <li><a href="">ページD</a></li> </ul> </div> ■CSS ----------------------------------- #sidebar li a { color: #F00; } #select a { color: #0F0; }

  • CSS ロールオーバーの画像が表示されません

    CSSでロールオーバーのメニューを作りましたが、 画像が表示されません…参考書どおりに作っているはずなのですが… どなたかお知恵をお貸しください。 【css】 .menu { width:860px; height:70px; margin-top:5px; } .menu #visamadhi a {background-image:url(navi-aboutvisamadhi.gif);} .menu #kirei a {background-image:url(navi-kireininaritai.gif);} .menu #manabi a {background-image:url(navi-manSabitai.gif);} .menu #shiritai a {background-image:url(navi-jibunshiritai.gif);} .menu #shouhin a {background-image:url(navi-shouhin.gif);} .menu ul { margin:0; padding:0; } .menu li {list-style-type:none; float:left;} .menu li a { display:block; width:160px; line-height:70px; border: 1px solid #D8D1AD; text-indent:-9999px; margin-right:5px; margin-left: 5px; overflow: hidden; } .menu li a:hover {background-position:0px -80px;} 【html】 <div class="menu"> <ul> <li id="#visamadhi"><a href="">Visamadhiとは</a></li> <li id="#kirei"><a href="">きれいになりたい</a></li> <li id="#manabi"><a href="">学びたい</a></li> <li id="#shiritai"><a href="">自分を知りたい</a></li> <li id="#shouhin"><a href="">商品を使いたい</a></li> </ul> </div> 実際に作成したcssを格納しました。 以下URLよりダウンロードしていただけるとありがたいです。 http://firestorage.jp/download/7ebe12eca202b26ce2171225270a8ffe53c820e9

  • jQueryプラグインのメガドロップダウンメニュー

    jQueryプラグインのメガドロップダウンメニューについて 当方プログラミング初心者です。 至らない点ばかりですが、どうかご容赦ください。。。 この度、仕事でこのメガドロップダウンメニューを使用することになりました。 サンプルサイトです→(1)http://www.designchemical.com/lab/jquery-mega-drop-down-menu-plugin/advanced-styling/# (2)http://www.designchemical.com/lab/jquery-mega-drop-down-menu-plugin/download/ 使用したいのは、 (1)にあるサンプル(オンマウスすると車の写真などが出てくる) スタイルは(2)にある、白色のバー なのですが、どうもうまくいきません・・・ 上記サイトからダウンロードしたもの ・jquery.js ・jquery.dcmegamenu.1.3.3.js ・dcmegamenu.css ・white.css その他素材などが、指定した名前のフォルダに入っています。 英語が読めないので、わからない単語は調べたりしてなんとかメニューとして形にはできたのですが バーの色は黒いままだし、まずドロップダウンしません。 今、この状態のまま詰まってしまっています・・・ たぶんめちゃくちゃになってしまっていると思うのですが、 どこが悪いのかわかりません・・・>< ★HTML(ヘッド) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ~~~ <head> <link rel="stylesheet" href="css/white.css" type="text/css" /> <script type="text/javascript" src="jquery/jquery.js"></script> <link rel="stylesheet" href="css/dcmegamenu.css" type="text/css" /> <script type="text/javascript" src="jquery/jquery.dcmegamenu.1.3.3.js"></script> <script type="text/javascript"> $(document).ready(function($){ $("mega-menu").dcMegaMenu({ rowItems: "3", speed: "fast" }); }); </script> </head> ★HTML(ボディ) <div class="dcjq-mega-menu demo-container"> <ul id="mega-menu" class="menu"> <li><a href="#">Home</a></li> <li><a href="#">Vehicles</a> <ul> <li id="menu-item-1"><a href="#">Coupe</a> <ul> <li><a href="#">Citroen C4</a></li> <li><a href="#">Honda CR-Z</a></li> <li><a href="#">BMW 3 Series</a></li> <li><a href="#">Volvo C30</a></li> </ul> </li> <li id="menu-item-2"><a href="#">Saloon</a> <ul> <li><a href="#">Volkswagen Passat</a></li> <li><a href="#">Volvo S40</a></li> <li><a href="#">Vauxhall Insignia</a></li> <li><a href="#">Mitsubishi Lancer</a></li> </ul> </li> ~~~~~~~~省略 <li id="menu-item-6"><a href="#">High Performance Cars</a> <ul> <li><a href="#">Lamborghini Gallardo</a></li> <li><a href="#">Ferrari F430</a></li> <li><a href="#">Aston Martin Vantage</a></li> <li><a href="#">Porsche 911 Turbo</a></li> </ul> </li> </ul> </li> <li><a href="#">About Us</a> <ul> <li><a href="#">About Us</a></li> <li><a href="#">About Us</a></li> </ul> </li> <li><a href="#">Services</a></li> <li><a href="#">Contact us</a></li> </ul> </div> 名前はまだサンプル通りです。 ★CSS(1)(dcmegamenu.css) http://www.designchemical.com/lab/jquery-plugins/jquery-mega-drop-down-menu/css/dcmegamenu.css ★CSS(2)(white.css) http://www.designchemical.com/lab/jquery-plugins/jquery-mega-drop-down-menu/css/skins/white.css つっこみ所だらけかと思います・・・すみません・・・ どこが悪いのでしょうか・・・? 私のような初心者にはまだまだ早いプログラミングなのかもしれませんが、 どうか、お力添えをお願いできれば、、、、お願いします。

  • CSSでポップアップメニューを作成したがIEだけメニューが表示されません。

    下記のようなCSSでポップアップメニューを作成したのですが IEだけポップアップメニューが表示されませんでした。 IEでもポップアップメニューが表示されるようにするには どのようにすればよいのでしょうか?(JavaScriptは未使用で作成) <html> <head> <style type="text/css"> #menu { position: relative; width: 102px; height: 22px; } #menu li { list-style-type: none; float: left; } #menu li a { color: gray; width: 100px; height:20px; text-decoration: none; text-align: center; border: 1px solid gray; display: block; } #menu li a:hover { background-color:#FFFFCC; } #menu ul li ul { display: none; } #menu ul li:hover ul { display:block; position:absolute; top: 22px; left: 0; } </style> </head> <body> <div id="menu"> <ul> <li> <a href="#">home</a> <ul> <li><a href="#">first</a></li> <li><a href="#">second</a></li> <li><a href="#">third</a></li> </ul> </li> </ul> </div> </body> </html>

    • ベストアンサー
    • HTML
  • CSSでリストを横並びにし、行頭画像を表示させたい

    XHTMLとCSSでのWebページを作成しています。 リストを横並びに表示、行頭画像も表示させ、さらにポイントした時に画像が変わるようにしたいのですが、下記の記述では横並びにはできても画像が表示されず困っています。 おかしい部分や足りない部分がありましたら、ご指摘お願い致します。 ≪CSS≫ #menu li{ display:inline; list-style-image:url(画像のパス); } #menu li a:hover{ list-style-image:url(画像のパス); } ≪html≫ <div id="menu" name="menu"> <ul> <li><a href="ファイルのパス">文字列</a></li> <li><a href="ファイルのパス">文字列</a></li> <li><a href="ファイルのパス">文字列</a></li> </ul> </div> 試しにdisplayを削除すると、画像はちゃんと表示されるので、画像のパスは間違っていないはずです。 何卒、宜しくお願い致します。

    • ベストアンサー
    • CSS
  • JQueryを使ってcssを書き換え

    何となくコードを見てさわる程度の初心者です。 以下のようなソースを組みました。 <div id="slide"> <a href="01.htm"><img src="01.jpg" alt="01" id="alttxt" /></a> </div> <div id="slidenavi"> <ul> <li><a href="01.html"><img src="s_01.jpg" alt="01" class="b_01.jpg" /></a><span class="active"></span></li> <li><a href="02.htm"><img src="s_02.jpg" alt="02" class="b_02.jpg" /></a><span class="active"></span></li> <li><a href="03.html"><img src="s_03.jpg" alt="03" class="b_03.jpg" /></a><span class="active"></span></li> </ul> </div> #slideがメインエリアで、#slidenaviがメインエリアの画像とリンク先を切り替えるナビゲーションボタンになっています。 ナビに連動したメインエリア用の画像ファイル名は #slidenavi の img の classに入れておいて、それを読み込んで代入するというおかしなやり方で呼び出していますが、ここまではうまくいきました。 問題はここからです。 最初の状態では<span class="active"></span>はcssの設定でdisplay: noneとしてあります。 そして#slidenaviのボタンにマウスが乗ると、その部分の<span class="active"></span>をdisplay: blockとして表示したいのですが、これがどうしてもうまくいきません。 この部分も含めて、おかしな書き方になっている部分があれば教えてもらえないでしょうか。 jsファイルは以下の通りです。 $(function(){ $('#slidenavi ul li a').fadeTo(0,0.4); $('#slidenavi ul li a').hover(function(){ $(this).fadeTo(300,1.0); }, function(){ $(this).fadeTo(300,0.4); }) $('#slidenavi ul li img').mouseover(function(){ var bglink = $(this).attr("class"); var altTxt = $(this).attr("alt"); $("#slide img").attr("src","images/home/main/"+bglink); $("#slide img").attr("alt",altTxt); $("#slide span.active").css("display","block"); }); $('#slidenavi ul li a').mouseover(function(){ var Href = $(this).attr('href'); var Tget = $(this).attr('target'); $("#slide a").attr("href", Href); $("#slide a").attr("target", Tget); $("#slide a").click(function() { window.open(Href,'_self'); return false; }); }); });