【问题标题】:jQuery Show Dialog Modal Animation Happens while Background DimmedjQuery Show Dialog Modal Animation 在背景变暗时发生
【发布时间】:2009-11-23 16:57:03
【问题描述】:

这是我忍了太久的烦恼,终于决定追寻答案。我在我的网络应用程序中显示了一个模态 jQuery 对话框,但显示它的动画没有以正确的顺序出现。我正在为页面上的链接设置一个单击事件(使用 jQuery),当用户单击它时,它会创建一个新对话框,其中 autoOpen 设置为 true。从对话框中取消会破坏它,以便用户可以在下次单击时再次打开它。

无论我使用什么动画(目前使用“blind”),似乎整个页面先变暗,然后打开对话框(仍然变暗),一旦对话框完全打开,它就会取消它。只是没有按正确的顺序发生。有没有其他人看到过这个,或者知道为什么会发生这种情况?我用来创建对话框的代码如下:

function setDialogWindows($dialogDiv, $leftList, $rightList, leftArray, rightArray, $htmlItemList) {

    $dialogDiv.dialog({
        autoOpen: true,
        modal: true,
        show: 'blind',
        hide: 'blind',
        width: 600,
        resizable: false,
        buttons: {
            Cancel: function() {
                resetDialog($leftList, $rightList);
                $(this).dialog('destroy');
            },
            'Save': function() {

                if (saveDialog($leftList, $rightList, leftArray, rightArray, $htmlItemList)) {
                    showHideItemList("show");
                }
                else
                    showHideItemList("hide");

                $(this).dialog('destroy');
            }
        }
    });
}

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 我不确定您要查找的顺序。您希望背景保持暗淡,直到用户从对话框中单击“保存”或“取消”?!?
  • @Brad,刚刚看到这条评论。不,我只是在描述它目前的表现。目前,背景首先变暗,然后通过动画出现对话框,但也一直变暗(很难看到,但它肯定会在变暗的背景中“盲入”),并且只有在所有显示动画完成后才会对话框亮起,而其余的背景变暗。显然,我想看到背景变暗,并且已经亮起的对话框盲了。我只是不确定为什么它必须在亮起之前完成动画。

标签: jquery animation dialog modal-dialog show


【解决方案1】:

我能够让它在 IE 和 FireFox 中正确显示,其中页面变暗并且对话框动画正确完成(非变暗)。你还有其他作用于<div> 标签的 jQuery 脚本吗?

编辑:我刚刚能够重现这个问题。对话框的初始显示与动画相结合似乎是一个问题。在您的情况下,因为您不断创建/销毁对话框,所以每次都会出现。以下是您可能想尝试的方法:

function setupDialog($dialogDiv) {
    // set autoOpen: false
    // within Cancel and Save use .dialog('close')
}

// Define the dialog boxes:
setupDialog($('#dialog1')); 
setupDialog($('#dialog2')); 
setupDialog($('#dialog3')); 

// Show the dialog on button clicks:
$('#button1').click(function() {
    $('#dialog1').dialog('open');
});
$('#button2').click(function() {
    $('#dialog2').dialog('open');
});
$('#button3').click(function() {
    $('#dialog3').dialog('open');
});

【讨论】:

  • @CAbbott,我在代码中的其他任何地方都没有对那个 div 做任何特定的事情。但是,我使用了一个名为 setDialog 的通用函数,我用它来构造三个单独的(非常相似的)对话框,并传入我想用来构造的 div。我传入的 div 是基于附加到页面上不同链接的点击事件。这和它有关系吗?
  • @Matt - 可能:)。 2 件事要记住: 1) 像'blind' 这样的动画是异步的,所以如果你用那个 div 标签做其他事情,它可能会弄乱显示。 2) 您之前在该 div 标签上设置的任何内容仍然有效(如切换)。是不是只有特效才能让它表现得那样?删除“隐藏:”和“显示:”是否使其正常工作?
  • @CAbbott,这一切都发生得如此之快,但我很确定当我移除隐藏/显示效果时,这一切都是同时发生的。 IE。背景变暗,对话框同时出现。这比我拥有的要好,但我当然更喜欢(从用户体验的角度)动画。如果我要让它没有进入或退出动画,我至少希望在对话框出现之前背景变暗,但现在我只是贪婪:)。您之前编辑的有趣见解。
  • @CAbbott,好吧,我将我的实现更改为您建议的方式,通过预先创建它们,然后只关闭并显示它们。但是,动画错误仍然存​​在。再多一点信息...
  • @Matt - 是的,我在对话框的第一次显示中出现了这个错误,但在随后的显示中没有。在我看来这是 jQueryUI 的一个错误。
猜你喜欢
  • 1970-01-01
  • 2011-08-18
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-03
相关资源
最近更新 更多