【发布时间】:2013-03-30 17:42:57
【问题描述】:
我从 CSSTRICKS 获得了一段代码,即神奇的线条导航,它会在我的菜单项下放置一条线,并在我悬停的项目上移动。我希望它是这样的,当我单击菜单时,该行将停留在该菜单项上,而不是像往常一样回到第一个。
脚本使用类选择器来告诉默认情况下该行应该去哪里。有了这个,我用jQuery做了一个toggleClass,它将类传递给单击的菜单项,但它没有更新。我必须重新加载页面才能更新。而且,它再次卡在同一位置。我希望有人知道如何做到这一点。这是我的代码:
$(window).bind("load", function () {
var $el, leftPos, newWidth;
$mainNav2 = $("#example-two");
/*
EXAMPLE ONE
*/
/* Add Magic Line markup via JavaScript, because it ain't gonna work without */
$("#line-menu").append("<li id='magic-line'></li>");
/* Cache it */
var $magicLine = $("#magic-line");
$magicLine.width($(".current_page_item").width())
.css("left", $(".active a").position().left)
.data("origLeft", $magicLine.position().left)
.data("origWidth", $magicLine.width());
$("#line-menu li").find("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")
});
});
});
【问题讨论】:
-
在 jsfiddle.net 中创建一个现场演示,如果无法看到现场 html 和 css 的定位问题,很难提供帮助
-
$("#line-menu li").find("a").hover(function () {中的部分是设置魔法线位置的部分(它下面的第二个函数将它重新对齐到它的原点)。类本身只是其中的一部分,将其设置为保持在活动菜单项下不仅仅是将该类添加到元素中。
标签: javascript jquery menu navigation