pull/5/head
gyt 3 weeks ago
parent 8295c5c767
commit 218b75bc32

@ -9111,6 +9111,7 @@
}; };
} else { } else {
// 定义一个名为getOffset的函数用于计算元素的偏移量
getOffset = function( elem, doc, docElem ) { getOffset = function( elem, doc, docElem ) {
var computedStyle, var computedStyle,
offsetParent = elem.offsetParent, offsetParent = elem.offsetParent,
@ -9143,6 +9144,7 @@
offsetParent = elem.offsetParent; offsetParent = elem.offsetParent;
} }
if ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) { if ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
top += parseFloat( computedStyle.borderTopWidth ) || 0; top += parseFloat( computedStyle.borderTopWidth ) || 0;
left += parseFloat( computedStyle.borderLeftWidth ) || 0; left += parseFloat( computedStyle.borderLeftWidth ) || 0;
@ -9163,31 +9165,39 @@
return { top: top, left: left }; return { top: top, left: left };
}; };
} };
// 重写jQuery的fn.offset方法允许对jQuery对象进行偏移量设置或获取
jQuery.fn.offset = function( options ) { jQuery.fn.offset = function( options ) {
// 判断是否有传入参数,即是否要设置偏移量
if ( arguments.length ) { if ( arguments.length ) {
// 如果没有传入具体的options参数即options为undefined则直接返回当前jQuery对象
return options === undefined ? return options === undefined ?
this : this :
// 如果有传入参数则对每个匹配的元素调用jQuery.offset.setOffset方法设置偏移量
this.each(function( i ) { this.each(function( i ) {
jQuery.offset.setOffset( this, options, i ); jQuery.offset.setOffset( this, options, i );
}); });
} }
// 获取当前jQuery对象集合中的第一个元素
var elem = this[0], var elem = this[0],
// 获取该元素的所属文档对象
doc = elem && elem.ownerDocument; doc = elem && elem.ownerDocument;
// 如果没有文档对象说明元素不存在或不是一个DOM元素返回null
if ( !doc ) { if ( !doc ) {
return null; return null;
} }
// 如果元素是文档的body元素则调用jQuery.offset.bodyOffset方法获取body的偏移量
if ( elem === doc.body ) { if ( elem === doc.body ) {
return jQuery.offset.bodyOffset( elem ); return jQuery.offset.bodyOffset( elem );
} }
// 对于非body元素调用getOffset函数获取元素的偏移量
// getOffset函数需要传入元素本身、文档对象和文档的documentElement即html元素
return getOffset( elem, doc, doc.documentElement ); return getOffset( elem, doc, doc.documentElement );
}; };
jQuery.offset = { jQuery.offset = {
// 定义一个对象jQuery.offset用于处理元素偏移量的相关操作 // 定义一个对象jQuery.offset用于处理元素偏移量的相关操作

Loading…
Cancel
Save