我已经使用jQuery MagicLine作为垂直滑动。我希望这样,当我单击菜单时,该行将停留在该菜单项上,而不像往常一样返回到第一个菜单项。相应地工作。请指教。这是我的代码:



$(document).ready(function() {
  magicline();
});

$(document).ready(function() {
			  $('a[href*=#]').each(function() {
			    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'')
			    && location.hostname == this.hostname
			    && this.hash.replace(/#/,'') ) {
			      var $targetId = $(this.hash), $targetAnchor = $('[name=' + this.hash.slice(1) +']');
			      var $target = $targetId.length ? $targetId : $targetAnchor.length ? $targetAnchor : false;
			       if ($target) {
			         var targetOffset = $target.offset().top;

					<!----- JQUERY CLICK FUNCTION REMOVE AND ADD CLASS "ACTIVE" + SCROLL TO THE #DIV--->
			         $(this).click(function() {
						$("#nav_menu li a").removeClass("active");
						$(this).addClass('active');
			           $('html, body').animate({scrollTop: targetOffset}, 1000);
			           return false;
			         });
			      }
			    }
			  });


			});


function magicline() {
  var $el, topPos, newHeight,
    $mainNav = $("#nav_menu");
  //$("#magic_line").remove();
  $mainNav.append("<li id='magic_line'></li>");
  var $magicLine = $("#magic_line");

  $magicLine
    .height($(".current_page_item").height())
    .css("top", $(".current_page_item a").position().top)
    .data("origTop", $magicLine.position().top)
    .data("origHeight", $magicLine.height());

  $("#nav_menu li").find("a").hover(function() {
    $el = $(this);
    topPos = $el.position().top;
    newHeight = $el.parent().height();
    $magicLine.stop().animate({
      top: topPos,
      height: newHeight
    });
  }, function() {
    $magicLine.stop().animate({
      top: $magicLine.data("origTop"),
      height: $magicLine.data("origHeight")
    });
  });
}

$('#nav_menu li a').bind('click', function() {
  $('#nav_menu li').each(function() {
    $(this).removeClass('current_page_item');
  });
  $(this).parent().addClass('current_page_item');
  magicline();
});

nav#nav_wrap {
  position: fixed;
  z-index: 5000;
  top: 40vh;
  right: 15px;
  padding-left: 10px;
  background: url(images/navbg.png) no-repeat left;
}
li{ list-style: none; }
nav#nav_wrap ul {
  width: 115px;
}
nav#nav_wrap ul li {
  margin-bottom: 10px;
}
nav#nav_wrap ul li a {
  color: #fff;
}
nav#nav_wrap ul li a.dot:hover,
nav#nav_wrap ul li a.dot:active {
  background: #52C6C0;
}
nav#nav_wrap .dot.active {
  background: #52C6C0;
}
nav#nav_wrap .dot {
  background: #005F59;
  width: 16px;
  height: 16px;
  display: block;
  border: 2px solid #fff;
}
.menu_title {
  margin-left: 22px;
}
#magic_line {
  position: absolute;
  top: 5px;
  left: 0;
  width: 2px;
  height: 142px;
  background: url(images/marker.png) no-repeat;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<nav id="nav_wrap" class="nav-wrap">
  <ul class="group navigation" id="nav_menu">
    <li class="current_page_item">
      <a href="#home" class="dot active">
        <div class="menu_title">Home</div>
      </a>
    </li>
    <li>
      <a href="#about" class="dot">
        <div class="menu_title">About</div>
      </a>
    </li>
    <li>
      <a href="#services" class="dot">
        <div class="menu_title">Services</div>
      </a>
    </li>
    <li>
      <a href="#portfolio" class="dot">
        <div class="menu_title">Media</div>
      </a>
    </li>
    <li>
      <a href="#contact" class="dot">
        <div class="menu_title">Contact</div>
      </a>
    </li>
  </ul>
</nav>





谢谢你的帮助。

编辑:
这是一个工作中的JSFiddle。
http://jsfiddle.net/9cg5bqxw/

最佳答案

不可能获得50名代表(现在已经连续49天卡住了哈哈),所以这还不是答案,而是一条评论。

请详细说明您要尝试执行的操作,这对我来说并不明确,代码段或JS Fiddle都不清楚您要问什么。

您是否有某人提供的有效示例,因为:


  当我单击菜单时,该行将停留在该菜单项中,
  而不是像往常一样返回第一个。
  页面的向下箭头,magicline应该可以正常工作。


并不是对要完成的任务的明确解释。

编辑:
我认为这就是您要寻找的:http://jsfiddle.net/xfba1403/8/

什么地方出了错 :

有几处错误:


您忘记添加“悬停”功能:

$("#nav_menu li a").hover(function() { $el = $(this); topPos = $el.position().top; newHeight = $el.parent().height(); $magicLine.stop().animate({ top: topPos, height: newHeight }); }, function() { $magicLine.stop().animate({ top: $magicLine.data("origTop"), height: $magicLine.data("origHeight") });
});

您正在使用的图像,也许可以在您的PC上使用,但不能在jsfiddle上使用,所以我将其更改为颜色:

#magic_line { position: absolute; color: black; top: 5px; left: 0; width: 5px; background-color: #fe4902;}


*由于重复/奇怪的使用而我编辑的内容:*


由于某种原因,您两次使用$(document).ready(function(){ // code });


小费

我建议您开始使用Bootstrap,它已成为建立标准网站的最常用的库,在构建了出色的Alpha之后,您可以轻松对其进行编辑:)

参考:http://getbootstrap.com/

09-18 12:37