以下jQuery代码适用于Safari,Opera,FF2和FF3。它将繁忙的DIV(带有动画繁忙的GIF)定位在我的网页上的FORM元素之上。问题是在IE6和IE7中,它正确地获得宽度和高度,但似乎没有正确地上下左右。有什么收获?
var nH = $('#' + sForm).attr('offsetHeight');
var nW = $('#' + sForm).attr('offsetWidth');
var nT = $('#' + sForm).attr('offsetTop');
var nL = $('#' + sForm).attr('offsetLeft');
$('#busy')
.css('position','absolute')
.css('height', nH + 'px')
.css('width', nW + 'px')
.css('top', nT + 'px')
.css('left', nL + 'px')
.show();
请注意,在我的页面上,我有多个FORM元素。 (繁忙的GIF的原因是因为我在提交表单时在后台进行了AJAX帖子。)
注意我还尝试了顶部和左侧的jQuery Dimensions Plugin 1.2的.position()
值,这有帮助,但似乎top
值越来越偏离我在页。
答案 0 :(得分:2)
现在jQuery(最新公开发布)将维度作为核心功能。
尝试使用$(element).offset()(它返回一个带有“left”和“top”属性的对象)。 我已经经常使用它,并且适用于许多浏览器(即6/7,歌剧,safari,chrome,ff2 / 3)
答案 1 :(得分:0)
我得到了jQuery Dimensions Plugin 1.2的顶部和左侧的.position()值。 (它返回一个数组,你可以在其中获得顶部和左侧数组值。)修复是我必须为IE6陷阱并且只为顶部减去一些固定数字(在我的情况下为12px),并在高度上添加相同的数字。在IE7上,我可以做同样的事情,但由于某些原因,在前200像素或更少的像素上必须以不同方式进行顶部和高度数学运算。您的情况可能会有所不同,具体取决于您之前的CSS,您的reset.css等。
答案 2 :(得分:0)
你确定元素设置为display:block吗?你也可以通过传递这样的哈希来避免多次调用css函数:
$('#busy')
.css({'position':'absolute',
'height': nH + 'px',
'width', nW + 'px',
'top', nT + 'px',
'left', nL + 'px'})
.show();