jQuery UI 对话框 - 设置默认配置

标签 jquery jquery-ui jquery-ui-dialog

我有几个 jQuery UI 对话框处理程序,所有这些处理程序都包含以下内容:

open: function(event, ui) {
      $(".ui-dialog-titlebar").removeClass("ui-corner-all");
      $(".ui-dialog").removeClass("ui-corner-all");
},

这样对话框就有方角,而不是圆角。我想知道是否可以将此设置为默认值,这样我就不必将此代码插入到页面上的每个对话框配置中。

我知道我可以编辑 CSS,但如果不需要的话,实际删除该类更有意义。

最佳答案

我知道它并不完美,但您可以定义自己的包含默认值的 defaults 对象。然后,如果您需要覆盖或添加这些默认值,您可以使用 $.extend:

var dialogDefaults = {
    open: function (event, ui) {
        $(".ui-dialog-titlebar").removeClass("ui-corner-all");
        $(".ui-dialog").removeClass("ui-corner-all");
    }
};
// then later on:
$("#foo").dialog($.extend({ }, dialogDefaults, {
    autoOpen: false,
    width: 500,
    /* etc... */
}));

还请记住,对于事件,您可以使用 on (或其同级 delegatebind 在选项对象外部绑定(bind)它们> 和直播)。您可以通过将相同的类应用于所有对话框来将该事件处理程序应用于多个对话框,例如:

$("div.my-dialog-class").on("dialogopen", function (event, ui) {
    $(".ui-dialog-titlebar").removeClass("ui-corner-all");
    $(".ui-dialog").removeClass("ui-corner-all");
});

请记住,此事件处理程序不会针对新对话框触发。您可以让事件在 DOM 中冒泡到 body 并在那里附加事件处理程序(这是我要走的路线):

$(document.body).on("dialogopen", "div.my-dialog-class", function (event, ui) {
    $(".ui-dialog-titlebar").removeClass("ui-corner-all");
    $(".ui-dialog").removeClass("ui-corner-all");
});

通过这种事件委托(delegate)方法,您可以将 open 函数应用到将附加到 document.body 的所有对话框。

关于jQuery UI 对话框 - 设置默认配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9293374/

相关文章:

javascript - 用javascript隐藏div全部折叠

jquery - 如何在 JQuery 中获取具有指定元素的第一个子元素?

javascript - 捕获 "Open Link in New Tab"javascript 或 jquery 的事件点击 - Cloaking URL

jquery-ui - jquery ui弹出YouTube视频模态

javascript - 限制在一个三 Angular 形内

Jquery 对话框和带有 IValidatableObject mvc3 的部分 View

jquery-ui-dialog - UI 对话框窗口 - 如何在加载内容之前不显示对话框?

javascript - 如何在 ace js 代码编辑器中添加 emmet 支持?

jquery-ui - angularjs和jqueryui datepicker输入框的值

css - 如何使 jQuery 对话框宽度适应移动浏览器?