javascript - 简化多个 jQuery Dialog 功能

标签 javascript jquery dialog

当我通过 Stackoverflow 和 Google 进行搜索时,我找不到简化代码的解决方案(或者也许我还没有找到确切的搜索词)。我无法简化下面的代码,这真的让我很烦恼。

由于我是该领域的初学者,因此当存在可以组合的相似之处时,我必须再次重复所有相同的代码。

非常感谢您的帮助!

$('.detail-view').dialog({
  autoOpen: false,
  draggable: false,
  resizable: false,
  closeOnEscape: true,
  modal: true,
  height: 'auto',
  width: 600,
  position: ['top', 150] });

$('.forgotpass').dialog({
  autoOpen: false,
  draggable: false,
  resizable: false,
  closeOnEscape: true,
  modal: true,
  height: 'auto',
  width: 400,
  position: ['top', 150] });

$('.user0').load('php/usersetting.php').dialog({
  autoOpen: true,
  draggable: false,
  resizable: false,
  closeOnEscape: false,
  modal: true,
  height: 'auto',
  width: 500,
  position: ['top', 150],
  open: function(){
    $(this).parent().find('.ui-dialog-titlebar-close').hide();
  } });

$('.user1').load('php/usersetting.php').dialog({
  autoOpen: false,
  draggable: false,
  resizable: false,
  modal: true,
  height: 'auto',
  width: 500,
  position: ['top', 100] });

$('.user2').load('php/usersetting.php').dialog({
  autoOpen: true,
  draggable: false,
  resizable: false,
  closeOnEscape: true,
  modal: true,
  height: 'auto',
  width: 500,
  position: ['top', 150],
  open: function(){
    $(this).parent().find('.ui-dialog-titlebar-close').hide();
  }
  });

最佳答案

由于绝大多数选项都是相同的,一个简单的答案是创建一个默认选项对象:

var defaults = {
  autoOpen: false,
  draggable: false,
  resizable: false,
  closeOnEscape: true,
  modal: true,
  height: 'auto',
  width: 200,
  position: ['top', 150]
};

然后使用 $.extend使用您想要覆盖的特定选项:

$('.detail-view').dialog($.extend({}, defaults, {
  width: 600
}));
$('.forgotpass').dialog($.extend({}, defaults, {
  width: 400
}));

您可以将其封装在一个函数中:

function createDialog(selector, options) {
    $(selector).dialog($.extend({}, defaults, options));
}

createDialog('.detail-view', {
  width: 600
});
createDialog('.forgotpass', {
  width: 400
});

或者当然,如果它只是 宽度:

function createDialog(selector, width) {
    $(selector).dialog($.extend({}, defaults, {width: width}));
}

createDialog('.detail-view', 600);
createDialog('.forgotpass', 400);

关于javascript - 简化多个 jQuery Dialog 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17763669/

相关文章:

c++ - 按下回车按钮时如何使用 C++ Win32 API 调用按钮?

javascript - 为什么这个脚本不起作用

javascript - ajax 请求 django , jquery

javascript - 将 Javascript 日期转换为 RFC 3339(谷歌日历日期)

javascript - 推迟在应用程序运行 angularjs 上创建 Controller /服务

JQuery:嵌套对话框定位

asp.net-mvc - 在同一模式对话框中验证表单发布

javascript - 在显示 twitter feed 时,如何使用 JavaScript 或 JQuery 检查特定推文是否被转发?

javascript - 使用 json 对象预填充表单的值

javascript - 如何将用户输入从文本框安全地传递到函数中,然后输出到 DOM?