方法“.scrollTop()”的结果值? - jQuery,HTML

时间:2012-12-16 04:20:12

标签: jquery html

问题:

指向示例的链接: http://jsfiddle.net/j65yQ/

/* First: */
/* Set the Position of the Division Tag to Fixed When Reaching the Top of the Window While Scrolling */

$(window).scroll(function(){ 

    var u_div_cn = $('div#container_nav');
    var u_os_top_read = $('div#container_nav').offset().top;

    if ($(window).scrollTop() > u_os_top_read) {      
    u_div_cn.addClass('set_position');};

});

滚动时resulting value .scrollTop()得到了什么?

上面示例中的division tag确实在conditional if statement到达window的顶部时将其位置属性设置为.offset().top

然而,为什么在此示例 “大于” zero工作,而 “等于” $(window).scroll(function(){ var u_div_cn = $('div#container_nav'); var u_div_cn_os_top = $('div#container_nav').scrollTop(); if ( u_div_cn_os_top == 0 ) { u_div_cn.addClass('set_position'); }; }); ,经过多次尝试后仍无效?

作为“等于”的示例:

equals to

我之所以要问的是,因为我认为top: 0能够在window的{​​{1}}处正常工作。

2 个答案:

答案 0 :(得分:2)

scrollTop函数返回内容向下滚动的像素数,即窗口上方有多少像素。

滚动时,您不会为滚动内容的每个像素获取事件。如果使用==运算符检查偏移量,则大多数时候都会错过它。使用>运算符可确保元素在顶部移出顶部窗口后立即固定。

如果您将scrollTop的值与零进行比较,那么只有向下滚动,然后向上滚动到顶部才会生效。

答案 1 :(得分:0)

这是因为当窗口滚动超出分区标记时,它会在视口上添加一个类来修复它。