jquery - 需要解决 jquery-ui/webkit 中的 .position() 错误

标签 jquery css jquery-ui webkit

我有一个网页,最终是一堆 jquery-ui 对话框,屏幕宽度均为 30%,分为三列,每列包含不同类型的仪表板信息。

我将数据加载到 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 的浏览器的问题?

最佳答案

似乎没有简单的答案。我最终测试了 jQuery.browser.safari,如果为真,则手动偏移 div。 :(

关于jquery - 需要解决 jquery-ui/webkit 中的 .position() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8378271/

相关文章:

javascript - 这个符号有什么作用?

javascript - 如何将 jquery 脚本格式化为生产环境?

css - 立即 1st tr 2nd td 不工作

javascript - 如何使用 JavaScript 制作动画?

css - 自定义语义 UI React 字体系列,但找不到 src/site/globals/site.variables 文件来执行此操作。还有别的办法吗?

javascript - 浏览器滚动动画

jquery - 防止 JQuery 日期选择器日期环绕

Jquery 选择同时具有 Class1 和 Class2 的所有元素

Firefox 中的 jQuery html()(使用 .innerHTML)忽略 DOM 更改

css - 使用 Zend Framework FlashMessenger 和 jQuery UI 状态类