覆盖jQueryUI对话框的默认选项

时间:2010-02-18 08:01:22

标签: jquery-ui jquery-dialog

我希望能够创建模态对话框,例如

close: function() {
    $(this).remove();
}

默认选项,无需在对话框创建时指定,但在某个地方覆盖这些参数。

这可能吗?

3 个答案:

答案 0 :(得分:60)

我也需要覆盖默认选项,并花了一些时间来弄清楚jQuery UI 1.8:

$.extend($.ui.dialog.prototype.options, {
    modal: true,
    resizable: false,
    draggable: false
});

上面的代码将允许您删除对话框选项之上的任何内容。上述方法应适用于大多数UI组件(它还允许您对存在或添加的函数进行原型设计。)

答案 1 :(得分:2)

您应该创建一个调用jQuery对话框函数的abstration。

基本上,不是在每个想要使用jQuery对话框的地方创建选项文字,而是创建一个创建所需选项的函数,然后从中调用jQuery对话框函数。

然后,在代码的所有区域中,调用您编写的封装代码的函数。

此过程称为encapsulation,适用于大多数(如果不是全部)软件开发语言。其中一个主要好处是它使您的代码更易于维护。

答案 2 :(得分:2)

jQuery UI中的对话框和其他小部件使用默认值定义哈希。您可以在加载jQuery UI后覆盖它们。

在javascript中搜索设置默认值的行:

$.extend($.ui.dialog, {
version: "1.7.2",
defaults: {
    ...

例如,在您的javascript中,您可以使用以下命令关闭autoOpen:

$.ui.dialog.defaults.autoOpen = false;

或者您可以合并选项的哈希值:

$.extend($.ui.dialog.defaults, {
  autoOpen: false,
  title: 'Default title'
})