同じページのコンテンツにリンクするメニューがあり、jQueryを介してdivをフェードインおよびフェードアウトし、完全に機能します。
ナビゲーションの最初のリンクにはクラス(current_page_item)がアタッチされており、ナビゲーションの他のリンクをクリックすると、そのクラスを削除して、クリックしたリンクに追加したいと思います。
これまでのところ、私は次のようなことを試しました:
$(function() {
$("#nav-links a").click(function(){
$("#nav-links ul li").removeClass("current_page_item").find("li:last a").addClass("current_page_item");
});
});
これは機能しません。
私はjavascriptに非常に慣れていないので、助けていただければ幸いです。
ありがとう!
編集:
ナビゲーションのHTMLは次のとおりです。
<div id="nav-wrap">
<ul class="group" id="nav-links">
<li class="current_page_item"><a href="#recent" class="linkclass recent">RECENT</a></li>
<li><a href="#work" class="linkclass work">WORK</a></li>
<li><a href="#who" class="linkclass who">WHO</a></li>
<li><a href="#services" class="linkclass services">SERVICES</a></li>
<li><a href="#contact" class="linkclass contact">CONTACT</a></li>
</ul>
</div>
編集2:
以下の答えを使用しても、それでも私が望むものを達成していないようです。おそらく、私が使用しているjQueryプラグイン(マジックライン)が原因です。リンク
したがって、基本的には、「行」をクリックされたものの下に配置したいと思います。これは、「current_page_item」が適切な場所にある新しいページをロードする場合に機能しますが、DIVをフェードインおよびフェードアウトしているため、それを行うことはできません。
行は、'current_page_item'クラスのliアイテムに戻ります。おそらく、このコードを変更して、クリックした要素にクラスを追加することができますか?
これがコードです。
$(function() {
var $el, leftPos, newWidth,
$mainNav = $("#nav-links");
$mainNav.append("<li id='magic-line'></li>");
var $magicLine = $("#magic-line");
$magicLine
.width($(".current_page_item").width())
.css("left", $(".current_page_item a").position().left)
.data("origLeft", $magicLine.position().left)
.data("origWidth", $magicLine.width());
$("#nav-links li a").hover(function() {
$el = $(this);
leftPos = $el.position().left;
newWidth = $el.parent().width();
$magicLine.stop().animate({
left: leftPos,
width: newWidth
});
}, function() {
$magicLine.stop().animate({
left: $magicLine.data("origLeft"),
width: $magicLine.data("origWidth")
});
});
});