• jQuery实现滚动监听


    1.设计思路
    1)获取窗口滚动高度;
    2)获取附加导航栏;
    3)获取导航栏下的所有li;
    4)通过相同class获取所有监听元素;(此例中为jumbotron巨幕)
    5)遍历所有监听元素,若当前元素距离文档高度小于文档滚动条的垂直偏移量(即滚动高度),获取当前元素ID。(此处获取的ID值,实际为ID值覆盖替换,因为存在有多个元素的e当前元素距离文档高度小于文档滚动条的垂直偏移量的情况,但只有最后的ID是有效值,因
    为前边的会被后边的覆覆盖替换掉)
    6)给对应的导航添加class(bootstrap中为给li添加active),先移出已有的active,然后再添加。

    实现代码
    $(document).ready(function() {
    //定义全局变量,获取附加导航栏、导航列表、链接、各楼层、各楼层距离文档的高度
      var menu = $("#add-nav"),
        lists = menu.find("li"),
        jumbotron = $(".jumbotron"),
        currentID;
      $(window).scroll(function() {
    //获取文档滚动高度
    	var top = $(document).scrollTop();
    
    //遍历楼层
    	jumbotron.each(function() {
    		var $this = $(this),
    		    jumbotronTop =$this.offset().top;//获取当前楼层的高度
    		if (top > (jumbotronTop - 200)) {
    			currentID = "#" + $this.attr("id");//每个小于top的楼层都会赋值一次,逐层覆盖替换,最后一层才是最后的id值
    		}
    		else {
    			return false;
    		};
    	})
    //给相应楼层对应的附加到导航添加class
    		//首先清除所有active
    		var currentActive = menu.find(".active");
    		if (currentID && currentActive.find("a:eq(0)").attr("href") != currentID) {
    		  currentActive.removeClass("active");
    
    		//给相应导航添加class
              menu.find("[href="+currentID+"]").parent().addClass("active");
    		}
      })
    
    });
    

    用到的方法有:scroll()、scrollTop()、offset()、attr()、addClass()、removeClass()、find()、each()、parent()
    其中重点说明:.offset()内容相对于文档的偏移(不是浏览器窗口),所以可以理解为固定值;

  • 相关阅读:
    C++11 中的 Defaulted 和 Deleted 函数
    php运行出现Call to undefined function curl_init()的解决方法
    Windows 8 IIS中配置PHP运行环境的方法
    中国天气预报数据API收集
    IIS 6中mimemap属性的默认设置
    使用APPCAN开发移动应用APP心得
    个人建了一个APPCAN移动前端开发交流QQ群258213194
    APPCAN MAS接口之AJAX
    JavaScript与DOM
    如何让网页在浏览器标题栏显示自己制作的图标ico
  • 原文地址:https://www.cnblogs.com/keepStudying/p/6193631.html
Copyright © 2020-2023  润新知