- 注册时间
- 2011-7-7
- 最后登录
- 2011-12-23
- 阅读权限
- 100
- 积分
- 271
- 精华
- 1
- 帖子
- 73
  
|
发表于 2011-7-12 13:11:24
|显示全部楼层
先看看jQuery中的代码,晕一下:- /*
- jQuery-1.3.2
- 获取方式,引入jQuery-1.3.2
- 然后alert($(window).scrollTop)
- Ctrl + C Ctrl + V
- 再格式化
- 另,ScrollLeft的自己去拿
- scrollTop:
- */
- function(val) {
- if (!this[0]) return null; // 如果this[0]是空,就给你返回空
- return val !== undefined ? this.each(function() { // 如果有val
- this == window || this == document
- ? window.scrollTo( // 就滚
- !i ? val : jQuery(window).scrollLeft(),
- i ? val : jQuery(window).scrollTop()
- ) : this[method] = val;
- }) : this[0] == window || this[0] == document
- ? self[ i ? 'pageYOffset' : 'pageXOffset'] // 否则就获取scrollTop
- || jQuery.boxModel
- && document.documentElement[method]
- || document.body[method]
- : this[0][method];
- }
复制代码 再看看1.5.2的,1.5.2的聪明了,top和left用each枚举出来了- jQuery.each( ["Left", "Top"], function( i, name ) {
- var method = "scroll" + name;
- jQuery.fn[ method ] = function(val) {
- var elem = this[0], win;
- if ( !elem ) {
- return null;
- }
- if ( val !== undefined ) {
- // Set the scroll offset
- return this.each(function() {
- win = getWindow( this );
- if ( win ) {
- win.scrollTo(
- !i ? val : jQuery(win).scrollLeft(),
- i ? val : jQuery(win).scrollTop()
- );
- } else {
- this[ method ] = val;
- }
- });
- } else {
- win = getWindow( elem );
- // Return the scroll offset
- return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
- jQuery.support.boxModel && win.document.documentElement[ method ] ||
- win.document.body[ method ] :
- elem[ method ];
- }
- };
- });
复制代码 不解释
jQuery的代码很坑爹啊,有木有!有木有!!
其实,各种浏览器的不同在于此:- var sTop = document.body.scrollTop || document.documentElement.scrollTop || window.pageYOffset;
- var sLeft = document.body.scrollLeft || document.documentElement.scrollLeft || window.pageXOffset;
- //存储的位置不一样,当然其它element也是有这个属性的
复制代码 完毕
|
|