【问题标题】:jQuery UI dialog with tabs带有标签的 jQuery UI 对话框
【发布时间】:2013-02-20 21:37:31
【问题描述】:

我正在使用带有 jQ​​uery UI 的选项卡式界面。那工作正常。每个选项卡实际上是一个表单。因此,当提交该表单时,该操作会将用户带回同一页面。但那时我想打开相应的标签。

所以,我使用的 URL 看起来像这样。

domain.com/page.php#tab1

这可以正常工作并打开正确的选项卡。页面的滚动位置有一个小问题。这是由于页面上的锚点位置。我希望滚动条位于页面顶部,因此我使用类似这样的方式返回顶部。

$('html, body').animate({ scrollTop: 0 });

所以,一切都很好。但是,然后我打开一个模态对话框,由于发生了滚动,它的位置不正确。

我进行了研究,发现了重新定位模态的建议:

$('my-selector').dialog('option', 'position', 'center');

但这似乎不起作用。

那么我怎样才能让它玩得很好呢?

我的简化代码如下:

html

<div id="tester">
</div>

脚本 - 准备就绪

$('html, body').animate({ scrollTop: 0 });#

jQuery('#tester').dialog
({
title: "Attribute " ,
minWidth: 840,
height:500
});

实际上,在实际版本中,对话框是通过单击处理程序打开的。因此,在打开对话框时,动画绝对是完整的。所以我很困惑为什么模态出现在页面底部。

提前致谢

【问题讨论】:

    标签: jquery jquery-ui dialog jquery-ui-tabs


    【解决方案1】:

    如果您确保在 .animate() 方法的完整回调上打开对话框,您应该没有任何问题。

    可能发生的情况是,在打开对话框时动画仍处于过渡状态,因此对其位置的内部计算不正确。下面是一个基本的例子:

    $('#button').click(function () {
        $('html, body').animate({
            scrollTop: 0
        }, openDialog);
    });
    
    function openDialog() {
        jQuery('#tester').dialog({
            title: "Attribute ",
            minWidth: 840,
            height: 500
        });
    }
    

    jsfiddle

    【讨论】:

    • @ruben 谢谢。好吧,这就是我认为的问题所在。但实际上并非如此。正如我所说,即使对话框是通过单击事件打开的(动画发生后很长时间),效果仍然相同。对话框在屏幕底部打开。
    • @niccol 我认为您最好的选择是发布您的实际代码或使用 jsfiddle 构建问题示例。否则,很难隔离 bug。
    猜你喜欢
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多