首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

控件定位有关问题obj.offset().top

2013-12-11 
控件定位问题obj.offset().top1 obj.offsetTop 是相对于上层非static容器的相对定位吗?2 jquery当中 obj.o

控件定位问题obj.offset().top
1 obj.offsetTop 是相对于上层非static容器的相对定位吗?
2 jquery当中 obj.offset().top 这个是怎么实现的?是向上递归一个一个控件的算吗?
高手帮忙答一下
[解决办法]
The .offset() method allows us to retrieve the current position of an element relative to the document. 

var docElem, win,
box = { top: 0, left: 0 },
elem = this[ 0 ],
doc = elem && elem.ownerDocument;

if ( !doc ) {
return;
}

docElem = doc.documentElement;

// Make sure it's not a disconnected DOM node
if ( !jQuery.contains( docElem, elem ) ) {
return box;
}

// If we don't have gBCR, just use 0,0 rather than error
// BlackBerry 5, iOS 3 (original iPhone)
if ( typeof elem.getBoundingClientRect !== core_strundefined ) {
box = elem.getBoundingClientRect();
}
win = getWindow( doc );
return {
top: box.top  + ( win.pageYOffset 
[解决办法]
 docElem.scrollTop )  - ( docElem.clientTop  
[解决办法]
 0 ),
left: box.left + ( win.pageXOffset 
[解决办法]
 docElem.scrollLeft ) - ( docElem.clientLeft 
[解决办法]
 0 )
};

[解决办法]
$(function() {  
           $("#p1").click(function(e) {  
               //offset()获得的是元素的左上角相对于整个网页的坐标                 
               var offset = $("#p1").offset();  
               $("#MsgShow").append("offset.top:" + $(e.target).offset().top + " offset.left:" + $(e.target).offset().left + " e.pageX:" + e.pageX + " e.pageY:" + e.pageY + "<br/>");  
           }  
           );  
       });  

热点排行