currentId不能直接直接通过currentId="#"+m.attr("id");来获得呢,还非要进行遍历吗

来源:4-2 使用jQuery实现网页定位导航(中)

Pengweb

2015-03-20 15:38

<script type="text/javascript">
   $(document).ready(function () {
       $(window).scroll(function () {
           var items = $("#content").find(".item");
           var menu = $("#menu");
           var top = $(document).scrollTop();
           var currentId; //滚动条现在所在位置的item id
           items.each(function () {
               var m = $(this);
               //注意:m.offset().top代表每一个item的顶部位置
               if (top > m.offset().top - 300) {
                   currentId = "#" + m.attr("id");
               } else {
                   return false;
               }
           });

           var currentLink = menu.find(".current");
           if (currentId && currentLink.attr("href") != currentId) {
               currentLink.removeClass("current");
               menu.find("[href="+currentId+"]").addClass("current");
           }
       });
   });
</script>


其中currentId为什么不能直接通过currentId="#"+m.attr("id");来获得呢,还非要进行遍历呢?这里的m就是this,这个this难道不能取到值吗

写回答 关注

1回答

  • 羊示子木
    2015-12-18 21:11:30

    items.each(function () {
                   var m = $(this);

    这里的this是动态变化的,你遍历是为了比较top与scrollTop从而找出想要的currentId,所以必须遍历

网页定位导航特效

本课程讲解网页定位导航特效,仿天猫版地狗购物网,你值得拥有

71404 学习 · 486 问题

查看课程

相似问题