3

如果我想创建一个 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的属性,其中包含对话框组件的所有属性。但是我怎样才能得到这个默认属性呢?

问候,

4

6 回答 6

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

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

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

于 2009-10-16T13:47:46.573 回答
4
// Get or set any dialog option. If no value is specified, will act as a getter.
.dialog( 'option' , optionName , [value] );
于 2009-10-16T13:45:50.217 回答
4

你可以使用

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

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

在事件中(例如“open”),您可以使用

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

我正在使用 jQuery UI 1.8.16(最新)。非常适合我。希望能帮助到你。

于 2012-05-11T08:52:05.120 回答
1

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

于 2009-10-16T13:46:14.267 回答
1

使用您的代码示例,您应该执行以下操作...

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

其中 optionName 类似于“高度”、“位置”、“可调整大小”等。

全部在JQuery UI 文档中

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

为每个选项简单地调用 .dialog('option', xxxx) 并将它们全部放在关联数组中的东西。不过,我不禁想到,即使有了这个数组供您使用,您也将回到从数组中拉出单个选项,而不是直接从对话框中拉出它。或者您是否打算使用该数组来创建第二个对话框?

于 2009-10-16T13:53:02.323 回答
0

正如 Daniel 指出的那样,您可以逐次循环遍历变量“设置”,并构建自己的对象以供 getSettings() 执行。

于 2009-10-16T14:20:40.687 回答