gpt4 book ai didi

javascript - 单击导航添加类/删除类

转载 作者:行者123 更新时间:2023-11-30 18:37:24 27 4
gpt4 key购买 nike

我有一个链接到同一页面上的内容的菜单,并通过 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 插件(魔法线)。 Link

所以基本上我希望“线”位于点击的内容下方。如果我在正确的位置加载一个带有“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")
});
});
});

最佳答案

您可以使用 $(this) 访问被点击的元素,并使用 parent() 访问它的父 li 元素以添加 current_page_item 类。下面是最终代码,您可以找到一个工作示例 here .

$(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:not('#magic-line') a").hover(function() {
$el = $(this).parent();
leftPos = $el.position().left;
newWidth = $el.width();
$magicLine.stop().animate({
left: leftPos,
width: newWidth
});
},function() {
$magicLine.stop().animate({
left: $magicLine.data("origLeft"),
width: $magicLine.data("origWidth")
});
}).click(function() {
$mainNav.find('li').removeClass('current_page_item');
$(this).parent().addClass('current_page_item');
$magicLine
.data("origLeft", $magicLine.position().left)
.data("origWidth", $magicLine.width());
});
});

关于javascript - 单击导航添加类/删除类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7859230/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com