我有一个网页,最终是一堆jquery-ui对话框,所有30%的屏幕宽度,三列,每列包含仪表板信息不同的种类。需要解决.position()错误jquery-ui/webkit
我将数据加载到div中,并在$(document).ready()函数中创建对话框,并将它们排列在各列的顶部,具体取决于div的数据类型显示。
我对每个div使用了这段代码的一个变体(我计划让这个更清洁,当我得到它正确的工作,所以请原谅它的冗余)。首先,我创建对话框如果它包含的数据:
//show recent posts if they exist below the account requests
if($('#recentPosts').html().length > 0){
$('#recentPosts')
.dialog({
title: 'Recent Forum Messages',
height: 320
})
.parent().addClass('cfdialog').attr('id', 'recentPostsDialog');
} else {
$('#recentPosts').addClass('cfdialog').attr('id', 'recentPostsDialog');
}
...这是必要的,因为我需要能够抓住整个对话框(我不明白为什么有没有一种机制来轻松地分配ID到对话框div);创建我的所有对话框后,我做这样的事情:
//now that the dialogs are set up, position them.
var leftContent = $('#columnTop');
var centerContent = $('#columnTop');
var rightContent = $('#columnTop');
$('.cfdialog')
.css('width', '30%')
.css('height', 'auto')
.css('max-height', '400');
...
$('#recentPostsDialog')
.position({
my: 'center top',
at: 'center bottom',
of: centerContent,
offset: '0 5'
});
if ($('#recentPostsDialog').html().length > 0){
centerContent = $('#recentPostsDialog');
}
这将显示在对话框中的职位,就像我在Firefox和IE浏览器一样。但是,对于Chrome,对话框弹出约30个像素并干扰我的菜单项。
我已经阅读了很多关于SO的文章,jQuery论坛建议这是由于webkit计算偏移量的方式,以及有人发布了修补程序修补程序,但在这种情况下似乎不起作用。
有人能告诉我如何解决基于webkit的浏览器的问题吗?
你确定对话框是正确的解决方案? –
说实话,不,我不认为它是,但我也不认为这是我的问题在这种情况下。 –
它有点儿。你试图将绝对定位的'div'(它将被附加在'body'的底部)超过一些其他元素。这甚至听起来错了,并且产生了我期望的那种问题。尝试使用折叠/关闭按钮创建窗口小部件,然后对话框确实不是正确的路径,你可能需要一些'可拖动的',但物理上位于列的内部 –