海外旅行から帰ってきたら、まず何を食べる?

カレントページ aタグではなく、liに「activeクラス」を付与したいのですが、
どうすれば良いでしょうか?

var URL = window.location.pathname;
$('ul#gnavi li a').each(function() {
linkURL =$(this).attr("href");
if ( URL == linkURL ){
 //$('ul#navi li').addClass('active"');//これだと全部activeになる
 //$(this).addClass('active');//これだとaがactiveになる
}

ナビ階層としては、<ul><li>の中に、さらに<ul><li>があります
一番外側のulにはid「gnavi」を付与しています
できれば、両階層とも「activeクラス」を付与したいのですが、
難しければ、とりあえず、中にある階層のliタグに「activeクラス」を付与したいです

jQueryを利用しようとしていますが、普通のjsで出来るのなら、そちらでやりたいです
(jQueryでもいいです)

A 回答 (2件)

HTMLの構成がはっきりとはわかりませんが推測で・・・



$(this).paernt("li").addClass("active");

gnaviの外側(祖先要素)にLIが無いと仮定して、外側も付与するなら
$(this).parents("li").addClass("active");



ライブラリを使わないならこんな感じでしょうか。
(onloadなどで実行してください)

var URL = window.location.pathname;

var i, a, elm;
var a = document.getElementById("gnavi").getElementsByTagName("a");

for(i=0; elm=a[i++];)
if(elm.href==URL){
while(elm && (elm=elm.parentNode)){
while(elm && elm.nodeName!="LI") elm = elm.parentNode;
if(elm) elm.className += " active";
}
}
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
大変参考になりましたー

お礼日時:2012/04/16 10:58

こんな感じでしょうか?




<html>
<head>
<title>テスト</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7 …
<script type='text/javascript'>
$(document).ready(function(){
$('li a').each(function(){
$(this).click(function(){
$('li').removeClass('active');
$(this).parent().addClass('active');
});
});
});
</script>
<style type="text/css">
.active{background-color: #CCCCCC}
</style>
</head>
<body>
<ul>
<li><a href="#">test1</a></li>
<li><a href="#">test2</a></li>
<li><a href="#">test3</a></li>
<li><a href="#">test4</a></li>
</ul>
</body>
</html>
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
parent().を使うんですね。
大変参考になりましたー

お礼日時:2012/04/16 10:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!