【问题标题】:Buttons in jquery-ui dialog box not showing when autoOpen false当 autoOpen false 时 jquery-ui 对话框中的按钮不显示
【发布时间】:2012-10-15 08:01:07
【问题描述】:

将 autoOpen 设置为 false 后,我无法在 jquery-ui 对话框中显示按钮。

我用这样的按钮设置了我的对话框。

$(document).ready(function() {
    $("#dialog-form").dialog({
        autoOpen: false,
        modal: true,
        buttons: {
            Ok: function() {
                $(this).dialog("close");
            }
        }
    });
});

单击页面上的其他内容后,我运行此行以打开我的对话框。

$("#dialog-form").dialog("open");

但是,对话框不显示任何按钮。我发现如果我设置autoOpen: true,那么当对话框立即打开时,按钮就会出现。如何在需要通过调用打开对话框时显示按钮(即设置autoOpen: false)?

【问题讨论】:

    标签: jquery jquery-ui


    【解决方案1】:

    根据 API,原始代码也应该可以工作: API 中的一个示例:

    ....
    <script>
    $( "#dialog" ).dialog({ autoOpen: false });
    $( "#opener" ).click(function() {
        $( "#dialog" ).dialog( "open" );
    });
    </script>
    ...
    

    我没有看到在文档就绪时初始化的代码...如果代码在文档就绪时没有初始化,则包含小部件标签的部分还无法加载,并且小部件将不会被初始化。当调用$( "#dialog-form" ).dialog( "open" ); 时,将应用新的初始化,因此按钮不会出现。

    将您的 JS 初始化代码放入 document.ready 部分

    $(function() {
    
      $("#dialog-form").dialog({
        autoOpen: false,
        modal: true,
        buttons: {
            Ok: function() {
                $(this).dialog("close");
            }
        }
      });
    
    });
    

    【讨论】:

    • 很好的答案,虽然我认为你应该使用$(document).ready(function(){ ... });。这在加载 DOM 后执行。 $(function(){ ... }); 在渲染 DOM 时执行。
    • 没错 :) 但如果代码很短,它们几乎同时执行......但你是对的。
    • 图像确实可以在渲染和加载之间产生很大的不同......通常是一个被忽视的问题。
    • 我在$(document).ready(function(){...}); 中设置了对话框,但我仍然遇到同样的问题。仅当我设置autoOpen: true 并且设置为false 时,才会出现“确定”按钮,除了底部的按钮之外,其他所有内容都会出现。
    • 嗯,所以我在一个单独的 JS 文件中测试了代码并且它工作正常,我的代码中一定有其他东西搞砸了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 2010-09-28
    相关资源
    最近更新 更多