|
|
@ -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,用于处理元素偏移量的相关操作
|
|
|
|
|
|
|
|
|
|
|
|