JQuery UI对话框:我如何获得对话框设置?

时间:2009-10-16 13:34:55

标签: jquery settings jquery-ui-dialog

如果我想创建一个JQuery UI对话框,我会使用类似的东西:

var settings = {autoOpen:false, draggable:false, and so on...};

var dialog = $("#container").dialog(settings);

但现在我想知道如何检索如上所示的对话框设置,例如

dialog.getSettings();

我需要它,因为我有一个使用许多具有默认行为的对话框的应用程序。像

这样的东西
function doAfterSubmit(dialogSettings) {
    // some code
}

var dialogSettings = {
    user:{
        add:{
            title:"Add user",
            buttons:{
                "Add":function() {
                    var settings = $(this).getSettings(); // The answer goes here

                    // AJAX to send some content

                    doAfterSubmit(settings);
                }
            },
            otherProperties
        },
        remove:{
            title:"Remove user",
            buttons:{
                "Remove":function() {
                    var settings = $(this).getSettings(); // The answer goes here

                    // AJAX to send some content

                    doAfterSubmit(settings);
                }
            },
            otherProperties
        },
        removeAll:{
            title:"Remove all user",
            buttons:{
                "Remove all":function() {
                    var settings = $(this).getSettings(); // The answer goes here

                    // AJAX to send some content

                    doAfterSubmit(settings);
                }
            },
            otherProperties
        }
    }    
}

在看到JQuery UI对话框源后,我注意到一个名为 defaults 的属性,其中包含对话框组件的所有属性。但是我怎样才能获得默认属性?

的问候,

6 个答案:

答案 0 :(得分:7)

dialog.dialog('option', 'name_of_option');

那应该返回该对话框的选项。

您可以做的是保留名称列表并循环遍历它们以重建设置数组。为什么你需要返回所有选项?

答案 1 :(得分:4)

你可以使用

var obj = $(selector).dialog("option");

“obj”包含所有对话框选项,作为普通的JAVASCRIPT对象。

在某个事件中(例如“开放”),您可以使用

var obj = $(this).dialog("option");

我正在使用jQuery UI 1.8.16(最新版)。适合我的作品。希望它有所帮助。

答案 2 :(得分:3)

// Get or set any dialog option. If no value is specified, will act as a getter.
.dialog( 'option' , optionName , [value] );

答案 3 :(得分:1)

尝试dialog.options,虽然我很想知道您为什么要查看它们(这可能会改变答案)。

答案 4 :(得分:1)

使用你的代码示例,你应该做这样的事情......

var optionValue = dialog.dialog('option' , optionName);

其中optionName类似于'height','position','resizable'等。

全部在JQuery UI documentation

编辑: 看到你添加到其他答案的评论后,听起来你需要一个提供所需功能的辅助方法(它可能应该作为主插件的一部分提供)

为每个选项简单地调用.dialog('option',xxxx)的东西,并将它们全部放在一个关联数组中。 不过我还是不禁想到,即使你可以使用这个阵列,你也可以回到阵列中拉出一个选项,而不是直接从对话框中拉出它。或者您打算使用数组从?

创建第二个对话框

答案 5 :(得分:0)

正如Daniel指出的那样,你可以循环遍历变量'settings',并为getSettings()构建你自己的对象。