blog
copyright ©
creamu Inc. All Rights Reserved.
art direction & design: Kunitaka Kawashimo
code, interaction & photography: creamu Inc.
category: Technology

jQueryでカレントページのメニュー画像に”_current”を付加して、親要素のアンカーを削除する方法

Pocket

<div id="menu">
<ul>
<li id="menu01"><a href="/page01/"><img src="/img/menu01.png" alt="page01" width="200" height="50" /></a></li>
</ul>
</div>
上記のようなHTMLがあって、page01にいるときに下記のようにしたい場合(画像に”_current”を付加して親要素のアンカーを削除したい場合)、
<div id="menu">
<ul>
<li id="menu01"><img src="/img/menu01_current.png" alt="page01" width="200" height="50" /></li>
</ul>
</div>
headタグ内でjQueryを読み込んだ上で、JavaScriptで下記のように書きます。
$(function(){
var url = window.location.pathname;
var currentSrc = $('#menu ul li a[href="'+url+'"]');
var current = currentSrc.children().attr("src").replace(/(.gif|.jpg|.png)$/, '_current'+"$1");
currentSrc.children().attr("src", current);
currentSrc.children().unwrap();
});
・var url = window.location.pathname;  window.location.pathnameでサイトルート相対のカレントURLを取得 ・var currentSrc = $(‘#menu ul li a[href=”‘+url+'”]’);  アンカーにカレントURLを入れ、変数currentSrcにセット ・var current = currentSrc.children().attr(“src”).replace(/(.gif|.jpg|.png)$/, ‘_current’+”$1″);  アンカーの子要素(この場合はimg要素)のsrc属性で、.gif・.jpg・.pngにマッチすれば、前に”_current”を付加。変数currentにセット ・currentSrc.children().attr(“src”, current);  img要素のsrc属性に変数currentを入れる ・currentSrc.children().unwrap();  img要素の親要素であるアンカーを削除