使用按钮最小化 JQuery Dialogextend

Posted

技术标签:

【中文标题】使用按钮最小化 JQuery Dialogextend【英文标题】:Minimize JQuery Dialogextend with a button 【发布时间】:2017-07-06 09:39:28 【问题描述】:

我已经实现了这个 jqueryui dialogextend 对话框。当我使用此对话框上传一些文件并且允许主页用户输入一些数据时,我希望当我单击正文中的任何位置时能够最小化。所以我的问题是如何在用户点击父页面时最小化 dialogextend 对话框(目前它在用户点击最小化按钮时起作用)。

这是我的 jqueryui dialogextend 对话框

$(".myClass").click(function () 
    $("#somediv").dialog(
        width: 400,
        height: 450
    ).dialogExtend(
         "closable": true,
         "maximizable": false,
         "minimizable": true,
         "collapsable": false,
    );
    return false;
    );

这就是它的样子

因此,当用户单击父页面中的任意位置时,我希望对话框最小化。有什么建议?

【问题讨论】:

【参考方案1】:

因此,经过长时间的多次失败尝试,我设法找到了几种方法。

第一种方法是添加一个 $(document).On 方法来向主 div 添加一个点击事件,它允许您跟踪页面上的任何点击并在显示对话框时隐藏它

上述方法有效,但我认为更好的解决方案是覆盖 jquery dialogextend 的最小化和关闭按钮的现有功能,以便在单击按钮时隐藏和显示对话框,并可以使用停靠功能,如如果 dialogboxextend 事件被覆盖,行为也一样。

如果将来有人需要这样做,我就是这样做的。

首先我将创建 jqueryui dialogboxextend 对话框

            $(".myCusClass").click(function ()  
            $("#divDialog").dialog(
                width: 400,
                height: 450
            ).dialogExtend(
                "closable": true,
                "maximizable": false,
                "minimizable": true,
                "restore": false,
                "collapsable": false,
                beforeMinimize: function (event, ui) 
                    event.preventDefault();
                    $("#divDialog").hide();
                    $("#minimizedDiv").show();
                    $("#divDialog").close();
                ,
                beforeRestore: function (event, ui) 
                    event.preventDefault();
                    $("#divDialog").hide();
                    $("#minimizedDiv").hide();
                
            );
            return false;
        );

请注意,我已经覆盖了 beforeminimize 和 beforerestore 方法,因此我可以隐藏和显示对话框,而无需实际关闭对话框。下面解释一下docker。

<div id="minimizedDiv" class="panel  panel-default " style="width: 200px; margin-left: 10px; margin-top: -20px; display: none;">
   <div class="panel-heading top-bar ">
      <span class="ui-dialog-title" style="width: 150px; margin-left: -5px"><b style="vertical-align: top;">Attach files...</b>
      </span>
      <a class="ui-dialog-titlebar-plus ui-corner-all ui-state-default" href="#" title="maximize" role="button" onclick="RestoreWindow()"></a>
      <a class="ui-dialog-titlebar-close ui-corner-all ui-state-default" href="#" title="close" role="button" onclick="CloseWindow()"></a>
   </div>
</div>

以上将作为最小化对话框时使用的泊坞窗。以下是用于从 docker 恢复和关闭对话框的函数

function RestoreWindow() 
        $("#divDialog").show();
        $("#minimizedDiv").hide();
    

function CloseWindow() 
        $('#divDialog').dialog('close'); 
    

【讨论】:

以上是关于使用按钮最小化 JQuery Dialogextend的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery JavaScript/任何插件推送通知

jQuery、IE 和动画

jQuery Resizable : 每个元素的唯一 MinWidth

是否有 jQuery 元素选择库的最小化版本?

QT界面如何加最小化、最大化按钮?

javascript 使用jQuery和CSS进行最小页面转换